전체 글
Nginx, Apache 그리고 node.js 성능 관련 잡다한 정리
Nginx과 Apache 비교 Nginx Apache 특징 - Nginx는 싱글 스레드 Event driven 방식- 미리 설정된 worker 프로세스 안에서 요청이 들어올 때 마다 요청을 분배하여 worker에게 역할을 분배- 기존에 정해놓은 리소스를 사용하기 때문에 CPU, Memory 등의 자원 사용률이 낮음 - 요청이 올 때마다 쓰레드를 생성하여 할당한다. 작업이 많아질 경우 많은 쓰레드할당이 필요하다. 그리고 쓰레드들이 작업을 진행 할 때마다 CPU를 사용하려 하기 때문에 문맥교환이 자주 발생된다. 차이점 - Apache에 경우 Blocking 방식으로 Network, DB 등 별도의 동작이 진행 될 때 Block되지만 Nginx는 Non-blocking 방식을 지원함 Non-blocking, ..
kafka docker에 간단 설치 후 Spring boot 연동 테스트
간단하게 Kafka 설치docker-compose.yml 생성 후 docker-compose up -d를 통해 설치12345678910111213141516version: '2'services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_HOST_NAME: wedul.pos KAFKA_CREATE_TOPICS: "test:1:1" volumes: - /var/run/docker.sock:/var/run/docker.so..
Kafka 요약 정리
Topic- 메시지는 Topic에 분류된다. Partition- Topic은 partition으로 구분된다.- 파티션에 쌓이는 데이터는 로그라고 부르고 각 파티션에 나눠서 저장된다. Topic이 파티션으로 나뉘는 이유- Topic 내부에 파티션이 없을경우 메시지를 보내는 대상이 많아질경우 append 속도가 버거워진다. - 병렬로 분산저장하고자 Partition 개념 생성- 한번 생성한 파티션은 운영중에 줄일 수 없기 때문에 설계시 조심 Consumer- Topic에 있는 데이터를 읽는 대상 Consumer Group- Consumer를 여러개 묶어놓은 것. Consumer Group이 필요한 이유.- 소비를 진행 하던 Consumer가 죽어버릴 경우를 Rebalance 상황이라고 하는데 이럴경우 파티션..
오버워치 가능한 게임 PC 컴퓨존 구매 후기
기존에 아이맥을 사용하고 있었지만 결혼을 하게되어 신혼집에 입주하게 되면서 와이프가 사용할 컴퓨터가 한 대 더 필요했다.평소에 개발 관련 공부를 진행하고 있어서 아이맥을 잘 사용하고 있었는데 게임이 안되서 지금까지 거의 집에서 해본적이 없다.마침 와이프에 컴퓨터를 조립식으로 윈도우 피씨를 맞추게 되면서 오버워치가 가능한 피씨로 견적을 맞췄다. 견적견적은 딱 중사양으로 맞추고 가격은 62만원정도 들었다. 배송료랑 조립비하면 64만원들었다. SSD는 집에서 사용하던게 있어서 빼고 구매했다. 다나와 견젹비교를 하고 구매하였는데 컴퓨존이 다나와보다 조금 더 저렴했다. 종류 사양 CPU 8세대 i5-8500 Mem 삼성 메모리 DDR4 8기가 그래픽카드 Geforce 1050 메인보드 GIGABYTE B360M ..
docker logstash 설치 및 log 파일 elasticsearch에 기록
ELK에서 logstash를 제외하고는 모두 경험해봤다.이제 logstash를 사용해서 log파일을 elasticsearch에 기록해보자. 설치elasticseach도 kibana도 pc에 직접 설치하고 싶지 않아서 docker에 설치해서 사용했다. logstash도 docker에 설치해서 사용해보자. 물론 logstash를 사용하기전에 elasticseach와 kibana가 설치되어 있어야한다. 설치법은 저번 게시물에 올려놨다. logstash를 이름을 지정해서 background에서 동작하도록 실행시킨다.1docker run --name logstash -d docker.elastic.co/logstash/logstash:6.4.0cs 설정파일logstash를 설치하면 내부에 다음과 같은 설정파일이 ..
Spring Reactive Web Application
Sprint 5에서 리액티브 프로그래밍을 지원하는 웹 애플리케이션을 만들 수 있다. 리액티브 프로그램이란? 이전시간에 정리했었지만 스프링 리액티브 프로그래밍을 들어가기 전에 간단하게 정리해 보자. 일반적으로 리액티브 프로그래밍은 비동기, evnet-driven 방식으로 non-blocking 하는 프로그래밍으로써 일반적인 시스템 보다 작은 작은 쓰레드 수가 필요하다. 그럼 왜? 비동기-논블록킹 리액티브 개발이 가능. 기존 멀티쓰레드 블로킹 방식과는 다르게 서버의 응답에 의지하지 않는 효율적 개발이 가능. 서버간에 호출이 잦은 마이크로 서비스에서 사용됨 Spring Web Reactive Module (Servlet 3.1 이상부터 지원) Spring Framework 5는 spring-web-reacti..
Spring reactor Mono와 Flux 정리
지금까지 Spring5에서 추가되었던 리액트 프로그램을 사용하여 간단한 프로그램을 만들어 봤지만 정확하게 Mono와 Flux에 차이와 정의를 정리하지 못한 것 같다. 이번기회에 두 개의 정확한 차이와 사용방법등을 정리해보자. 리액티브 프로그래밍 비동기 블록킹 프로세스로 동작하는 애플리케이션을 논블록킹 프로세스로 동작하기 위해서 지원하는 프로그래밍. (현재 node.js의 동작방식과 유사) 기존 Spring 블록킹 방식 웹에서 서버에 요청이 왔을때 서버는 요청에 대한 적절한 응답을 보내야 하는데 만약 작업이 오래 걸릴 경우에는 요청에 대한 응답이 모두 종료될 때까지 블록킹된다. Spring에서는 그래서 동시 요청 처리를 위해서 멀티 thread를 지원한다. 그러면 하나의 작업이 thread에서 진행되고 다..
레오폴드 FC660C 무접점 화이트 사용후기 (키보드 소리 리뷰 포함)
집에서 사용하던 2만원짜리 싸구려 청축 키보드가 고장나서 집에서는 그냥 원래 대학교 2학년때 사용하던 한성 갈축을 사용하고 있었는데 키 입력이 자꾸 씹히는 현상이 발생했다. 참고 참다가 키가 입력이 자꾸되질 않아서 너무 힘들었고 집에서 사용할 무접점 싼 키보드를 찾았다. 그런데 보급형이라고 생각했던 한성과 앱코 키보드가 무접점이 10만원부터 시작이었다..... 너무 비싸다 그래서 포기하고 중고나라에서 중고로 알아보던 중 레오폴드 FC660C를 10만원에 판매하신다는 판매자가 나타났다. 원래 FC660C는 대학교형이 연구실에서 사용할때 봤었는데 F1 ~ F12까지의 키가 없어서 너무 불편하다고 생각했었다. 그런데 지금은 맥을 쓰면서 그 키들을 사용하지 않기때문에 큰 문제가 아니라고 생각했고, 10만원주고 ..
현대백화점 천호점 라그릴리아 방문 후기
2018년 마지막날 여자친구 생일을 기념으로 현대백화점 천호점에 있는 레스토랑 라그릴리아를 방문했다.레스토랑이 있는지는 예전부터 알았지만 방문해보는건 이번이 처음이었다. 스파게티, 라조또 그리고 스테이크를 하나씩 시켰다. 개당 15000 ~ 29000원 사이에 가격대를 형성한다. 그렇게 비싸지 않고 적당했다.창문자리에 앉으면 잠실 타워도 보이고 노을이 질때쯤이어서 엄청 색감이 이뻤다.예약을 안해서 자리가 하나밖에 없었지만 그래도 잘 골랐다.먼저 시킨 치즈 리조또는 엄청 맛있다.내가 먹어본 리조또중에 제일 맛있다. 특히 위에 뿌려져있는 머스타드 크림은 환상적인 맛이었다. 가격대는 만원 후반이었는데 진짜 맛있었다. 해물 스파게티도 가격대가 16000원정도였는데 해산물도 질기지 않고 너무 맛있었다. 굿굿 홍합..
Kafka 정리
카프카는 분산형 스트리밍 플랫폼으로써 다음으로 정의할 수 있다. 메시지 큐와 유사하게 스트림을 publish하고 subscribe 하는 방식이다.fault-tolerant 지속 방식으로 레코드들의 스트림들을 저장한다. 용도 시스템이나 어플리케이션에서 발생한 실시간 스트리밍 데이터를 안정적으로 데이터 파이라인 구축할 때데이터 스트림을 전송하거나 처리해야할 때 사용 구성 하나이상에 서버에 여러 cluster로 구성되어 있다.topic이라는 카테고리로 레코드 스트림들을 저장한다.각각의 레코드들은 key, value, timestamp로 구성되어 있다. 핵심 APIProducer API하나 또는 그 이상의 카프카 topic을 데이터 스트림에 발행할 수 있도록 해주는 APIConsumer API어플리케이션이 하나..