반응형

IT/Others 16

리액티브 데이터 타입(Mono, Flux)을 사용하는 이유

스프링 웹플럭스를 사용하면 Mono와 Flux 타입을 만나게 됩니다. 이 두 개의 데이터 타입은 왜 필요하게 되었을까에 대해서 알아보려고 합니다. 리액티브 타입의 도입 리액티브 타입은 request와 data의 빠른 처리 목적으로 도입된 개념이 아닌, 잦은 오버헤드를 줄이기 위해서 도입되었습니다. 전통적인 블로킹 작업에서는 기다리는 동안에 자원을 잡고 있었습니다. 그러나 논블로킹에서는 자원을 차지하지 않습니다. 그래서 이를 활용한 리액티브 프로그래밍에서는 request를 동시적으로 처리할 수 있는 장점과 원격 서버에서 오는 데이터 작업을 대기시간 없이 처리할 수 있는 장점이 있습니다. Reactive API는 개별 데이터를 하나씩 처리하는 것 뿐만 아니라 스트림 데이터를 다룰 수 있습니다. 비동기 처리를..

IT/Others 2023.05.07

I/O operation

I/O operation은 외부 환경과 컴퓨터 사이의 통신을 의미합니다. 대게 I/O operation은 컴퓨터 메모리와 외부 장비 즉, 마우스나 키보드, 디스플레이어 등과 같은 장치들 사이에 데이터 통신을 포함합니다. Input operation : 컴퓨터 외부에서 데이터를 가져오고 컴퓨터 메모리에 저장 Output operation : 컴퓨터 메모리의 데이터를 외부로 전달 Synchronous I/O operation : I/O operation이 종료되기 전까지 기다렸다가 종료된 후에 다음 절차 수행 Asynchronous I/O operation : I/O operation이 수행되는 동안에 다른 작업도 수행

IT/Others 2023.05.06

Reactor 패턴과 Proactor 패턴

리액터 패턴과 프로액터 패턴에 대해서 알아보겠습니다. 둘은 '이벤트 핸들링 패턴' 입니다. 이 패턴은 멀티 스레드 이후에 도입되었습니다. 대용량 네트워크 환경에서 멀티 스레드는 어느 정도 효과를 보았는지 몇 가지 문제가 있었습니다. 스레드가 많이 필요하니 오버헤드가 생기거나 자원의 공유 문제가 발생했습니다. 그래서 이벤트가 발생하면 처리하고 이후에 콜백으로 받는 패턴을 도입합니다. 이벤트 핸들링 패턴의 요소는 아래와 같습니다. Event sources : 이벤트를 감지하고 가져옴 Demultiplexer : 이벤트가 발생할 때까지 기다리다가 발생하면 이벤트 핸들러에게 이벤트를 전달 Event handlers : 이벤트를 처리하고 콜백으로 응답을 보냄 이벤트 처리 패턴의 특징은 비동기 처리가 가능하고 순서..

IT/Others 2023.05.06

디자인 패턴 소개 (POSA 2)

POSA 2권에서는 대용량 네트워크, 분산 객체를 위한 패턴을 다룹니다. 대용량 네트워크에서는 서로 이질적인 시스템 간에 통신이 이루어지는 경우가 많습니다. 이질적인 두 시스템간에 통신을 하기 위해서는 어떠한 방법이 필요했고 이 방법이 이번 POSA 2에서 다루는 패턴들 입니다. 이제 POSA 2권에서 소개된 패턴들에 대해서 간략하게 알아보겠습니다. POSA 2 패턴은 크게 4개의 카테고리로 나눌 수 있습니다. 서비스 접근 및 설정, 이벤트 핸들러, 동시성 제어, 동기화 입니다. 서비스 접근 및 설정 이벤트 핸들러 동시성 제어 동기화 Wrapper Facade (Facade Pattern) 비-객체지향 또는 복잡한 시스템을 관리성, 호환성, 견고성을 확보하기 위해 객체지향 클래스로 캡슐화 하는 패턴 Re..

IT/Others 2023.03.19

디자인 패턴 소개 (POSA 1)

패턴이라는 용어를 자주 접했습니다. 파사드 패턴, pub-sub 패턴 등 땡땡-패턴이라고 많이 보았습니다. 도대체 패턴이 무엇이길래 이렇게 패턴 패턴 용어가 생겼을까요. 패턴에 대해서 정리해 보려고 합니다. 패턴이란? 패턴은 문제를 해결할 수 있는 방법이라고 생각합니다. 과거에 문제를 해결한 사람들이 비슷한 문제를 해결하기 위해서 하나의 패턴을 만들었고 우리는 이렇게 만들어진 패턴을 이용해서 유사한 문제를 해결합니다. 건축에서 사용되던 패턴을 소프트웨어에도 적용해 보자고 해서 GoF(Gang of Four) 멤버들은 23개의 디자인 패턴을 추출했습니다. 이 패턴들을 배우다 보면 '과연 이것들이 쓰일까?'라는 의문이 듭니다. 하나만 분명하게 쓰인다면 쉽게 관찰할 수 있겠지만, 실제로는 여러 개의 패턴들이 ..

IT/Others 2023.01.26

객체 지향 상속의 종류 : Subclassing 과 Subtyping

우선 class와 type의 의미를 알아보겠습니다. String str = new String("Jeong"); 위와 같이 객체를 생성할 때, 저는 String을 클래스 또는 타입이라고 혼용해서 사용했습니다. 둘은 차이점이 있고 이 차이점을 무엇일까요. 클래스는 "객체가 수행할 행동에 대한 연산의 집합"이라고 할 수 있습니다. 클래스를 떠올려보면 값을 저장할 변수와 변수를 가지고 연산할 구현된 메소드로 구성되어 있습니다. 타입은 "객체가 수행할 행동에 대한 약속의 집합"이라고 할 수 있습니다. 타입을 떠올려보면 메소드가 선언만 되어 있고 구현이 되어 있지는 않습니다. Java에서는 인터페이스가 있습니다. Subclassing 클래스 상속이라고도 불립니다. 부모 클래스를 자식 클래스가 상속 받습니다. 그러..

IT/Others 2022.11.26

싱글톤 패턴

디자인 패턴 중 하나인 싱글톤 패턴에 대해서 알아보겠습니다. 회사에서 스프링을 사용하여서 공부를 시작했습니다. 그런데 싱글톤 패턴 개념이 나와서 정리해 두려고 합니다. 싱글톤 패턴 ( Singleton Pattern ) 싱글톤 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하고 프로그램 어디에서든지 이 인스턴스에 접근할 수 있도록 하는 패턴입니다. 그래서 새로운 인스턴스를 만들지 않고 기존 인스턴스를 계속 사용합니다. 구현은 아래와 같습니다. public class SingleObject { private static SingleObject singleObject = null; // 외부에서 직접 생성하지 못하도록 private 선언을 합니다. private SingleObject(); // 인스턴스 ..

IT/Others 2022.08.27

전략 패턴

디자인 패턴 중 하나인 전략 패턴에 대해서 알아보겠습니다. 회사에서 리팩토링도 하고 새로운 서비스를 개발하기 위해서 알아보던 중에 전략 패턴이 적절한 것 같아서 조사하게 되었습니다. 전략 패턴 ( Strategy Pattern ) 객체들이 할 수 있는 행위를 클래스로 정의하고, 유사한 행위들은 캡슐화하는 인터페이스를 정의합니다. 객체의 행위를 바꾸고 싶은 경우에는 직접 행위를 수정하지 않고 전략을 바꿔주어 유연한 확장이 가능하도록 설계하는 것을 말합니다. 전략 패턴 사용하는 이유 사용하는 이유를 알기 위해서 문제점을 발견해 보겠습니다. Season이라는 인터페이스가 있고 이를 구현한 Summer와 Winter 클래스가 있습니다. 그리고 Summer와 Winter를 사용하는 Person도 있습니다. 위 구..

IT/Others 2022.08.13

DMA (Direct Memory Access)

What? DMA(Direct Memory Access)는 주변 장치들이 메모리에 직접 접근해서 읽고 쓸 수 있게 해주는 기능입니다. 아래 그림에서 Without DMA를 보시면 CPU가 항상 개입하여 메모리에 접근합니다. 이러한 방식을 PIO(Programmed Input/Output)이라고 합니다. 아래 그림에서 Processor WITH DMA를 보시면, CPU 개입 없이 메모리에 접근할 수 있습니다. 메모리에 접근할 때에는 DMA 컨트롤러에게 요청을 보내서 접근합니다. When? 많은 데이터 입출력이 있는 경우에 DMA를 사용하면 CPU에 부담을 주지 않을 수 있습니다. DMA가 없다면 데이터 입출력 처리가 끝날 때까지 CPU는 대기해야 합니다. How? 참고 블로그 : https://m.blog..

IT/Others 2022.05.11
반응형