공부!

공부!

카프카(kafka)란 무엇이며, 왜 사용할까?

프로젝트에 메세지 큐로써 카프카를 사용했지만, 카프카가 무엇이며 왜 사용했으며, 그 구조가 어떻게 되어있는지는 개념적으로 설명하지 않은 것 같아 간단하게 정리하겠습니다. 1. 카프카 : 메세징 시스템 프로젝트 기능을 구현하기 위해 시스템 모듈간 메세지나 데이터를 교환해야할 필요가 있습니다. 서비스 모듈에서 처리된 데이터를 DB 모듈로 옮기거나, 알림 모듈에서 발생한 데이터를 로깅 모듈로 옮기는 등 필요한 상황은 매우 많습니다. 이를 구현하기 위해 생각해 볼 수 있는 방법은 데이터 교환이 필요한 모듈마다 버스를 구성해서 point to point 통신을 하는 것인데, 개략적인 모습은 아래와 같습니다. 별로 이상적이지 않죠? 아키텍처의 복잡도가 필요 이상으로 올라가고, 시스템의 각 모듈이 강하게 결합되어 있..

공부!/OS

Spinlock / Mutex / Semaphore

OS에서 여러 스레드가 공유하는 공유 자원에 대한 동시성 문제를 해결하기 위해 프로그램적으로 사용하는 여러 방안들을 이론적으로 살펴보고, 해당 방법들을 간단한 자바 코드로 작성해보겠다. 그 전에 간단한 용어 소개부터. 공유 자원 : 여러 스레드 / 프로세스가 공유하는 자원. 임계 영역 : 스레드 / 프로세스가 공유 자원에 접근하는 영역. 자바 중심으로 살펴볼 것이기 때문에 실행 단위를 간단하게 스레드로 좁히겠다. 공유 자원에 대해 동시성 문제를 컨트롤하기 위해, 스레드는 임계 영역에 들어가기 전 '락(lock)'을 얻어야 한다. CS에서 동시성 컨트롤은 이 '락 컨트롤'이라 생각해도 무방하다. 락 컨트롤에는 락과 관련해서, 어떻게 스레드들이 락을 얻고, 락을 내려놓고, 어떤 스레드에게 락을 할당할지 결정..

공부!/Network

HTTP 버전별 변천사

초간단하게 알아보는 HTTP/0.9부터 HTTP/3까지의 내용 !!! 머릿속에 남겨놓고 싶어서 이런저런 자료를 찾아보았다. 1. HTTP/0.9 : 원시 HTTP HTTP란 Hyper Text Transfer Protocol로써, www를 통해 hyper text를 요청 - 응답 구조로 교환하기 위한 프로토콜이다. 최초의 HTTP는 정말 단순히 "요청"에 대한 "응답"만을 받기 위한 프로토콜이었다. 요청은 형태로 단 한 줄 만이 존재했고 응답 역시 단순 HTML만이 있을 뿐이었다. 헤더? 이딴거 없었다. 또한 응답을 받으면 TCP 커넥션을 바로 끊어버렸기 때문에 사용자가 서버에 여러번 요청을 날려도 매 요청마다 핸드셰이킹 과정을 거쳐야했다. 버전 0.9라는 것도, 지금 와서 최초의 HTTP를 표현하기 위..

공부!/OS

CPU 스케줄링

이하 설명은 CPU의 실행 단위인 프로세스와 스레드를 묶어서 "프로세스"라는 용어를 사용하겠다. 1. 멀티 프로세스 / 스레드의 동시성 컴퓨터는 동시에 여러 일을 진행한다. 크롬 탭으로 유튜브 노래를 틀면서 이렇게 글을 작성할 수도 있고, 동시에 카카오톡 pc 앱을 켜서 카카오톡도 이용하고, 그러면서도 연결된 아이폰의 문자 알림을 계속해서 받을 수 있는 것이다. 그렇다고 해서 실제로 컴퓨터가 동시에 2개 이상의 명령어를 수행하는 것은 아니다. 여러 개의 프로세스를 시분할로 번갈아가면서 수행하고 있을 뿐이다. 타자를 치는 것, 타자를 친 결과가 티스토리 에디터에 전달되는 것, 에디터에 전달된 내용이 서버에 올라가는 것, 그 내용이 다시 노트북의 화면에 나타나는 것은 전부 다른 프로세스가 담당한다. 정확히 ..

김부추
'공부!' 카테고리의 글 목록 (3 Page)