전체 글 27

요즘 이동욱님 (향로, jojoldu)에게 빠져있습니다.

예전에 개발바닥 구독해놓고 가끔 보고 있었는데, 얼마전에 테스트 코드 관련 영상은 아니였지만 테스트 코드에 대해 질문이 나와서 본인은 classicist 여서 mocking을 지양 하신다고 말씀하신것을 보았습니다. classicist 라는 단어 자체를 처음 들어서 찾아봤는데, 생각보다 깊은 내용이였더라구요. 이미 알고 계신 분들도 많겠지만, 간단히 설명하자면 아래와 같습니다. Classicist vs Mockist 제가 기존에 알고 있던 테스트 방법은 Test Double 을 사용하는 solitary 테스트 였습니다. 이 테스트 방법을 사용하는 사람들을 mockist라고 하구요. 그에 반해 TDD의 창시자 켄트백, 그리고 마틴 파울러는 이동욱님과 같은 classicist 입니다. classicist는 m..

나의 삶 2023.03.01

[kafkajs] consumer

이번에는 kafka consumer app을 설정해보겠습니다. import { Kafka, KafkaMessage, logLevel } from 'kafkajs' /** * kafka 인스턴스를 생성합니다. * clientId: 원하는 문자열 * brokers: docker-compose.yml에서 kafka 설정에 작성한 PLAINTEXT_HOST://localhost:29092, 29093, 29094로 지정했던 것을 넣습니다. * requestTimeout: kafka clinet가 broker로 데이터 전송 요청을 보낼때의 최대 소요 시간입니다. 이 시간이 초과하면 요청을 실패로 처리하고 에러를 반환합니다. * connectionTimeout: client와 broker 간 연결을 ..

MQ 2023.03.01

[kafkajs] kafka에 대한 간단한 소개

kafka 공식문서를 보고 부연설명을 붙인 글입니다. (https://kafka.js.org/docs/introduction) Cluster: Kafka가 여러개 돌아가는 단위 Broker: 단일 kafka 인스턴스 1개 Topic: 특정 주제에 대한 메세지를 담고 싶으면 Topic을 설정한다. 예를들어 'order' topic을 지정하여 주문 관련 메세지는 여기에 보낼 수 있다. Partition: 메세지 처리 단위. cluster를 구성했을 때, 하나의 토픽에 대해 다른 broker에 복제된 파티션이 생긴다. 이렇게 복제된 파티션이 있으면, 데이터 병렬처리가 가능하다. Producer: broker에 메세지를 보내는 주체 Consumer: broker에서 메세지를 받는 주체 Replica: 파티션을 ..

MQ 2023.02.26

[kafkajs] docker를 이용한 kafka clustering 셋팅 방법

처음에는 local에서 kafka를 띄웠었습니다. (도움받은 블로그: https://yooloo.tistory.com/68) 나중에는 docker로 띄우더라도, 처음에는 local에서 직접 노가다하며 띄워보고 싶었기 때문입니다. 그런데 clustering을 구성하려고 하니 설정파일을 일일이 변경을 해주거나, 명령어에 덧붙여야해서 결국 docker로 띄우기로 결정했습니다. 구글에 검색을 해서 다른 분들이 작성하신 글을 보고 따라하니, 첫 번째 난관에 부딪혔습니다. kafka에 대한 docker image의 종류가 여러개였기 때문입니다. 1. confluentinc/cp-kafka, confluentinc/cp-zookeeper 2. wurstmeister/kafka, wurstmeister/zookeepe..

MQ 2023.02.26

kafka 글을 작성하기 전에

회사에서는 RabbitMQ를 사용하고 있습니다. 개발자로 일을 시작한지 5달정도가 되었고, 코딩을 시작한지 1.5년정도가 되었기 때문에 회사에서 일을 하기 전까지는 RabbitMQ, Kafka 등에 대해 들어본적 이없었습니다. 단순히 부트캠프를 할 때, 간간히 카카오 현업 코치님께서 하시는 말씀 중 kafka라는 단어가 있어 머릿속에 놓여있을 뿐이였죠. 그런데 회사에서 제가 RabbitMQ consumer app을 리팩토링을 해볼 기회가 생겼고, 리팩토링 하며 RabbitMQ가 어떤 것인지 알게 되었습니다. 그리고 NestJS 카카오톡 오픈 채팅방에서 어떤 분께서 본인이 pub/sub pattern과 여러 기술 스택을 사용하여 토이프로젝트를 진행하는데, 도와주실 분이 없냐는 말씀을 하셨습니다. 그것을 보..

MQ 2023.02.26

velog -> tistory 이전

기술 블로그로 velog를 사용하다가 tistory로 옮겼습니다. 이전 블로그 주소는 https://velog.io/@chss3339 입니다. 옮긴 가장 큰 이유는 방문자 통계를 자세하게 보고 싶기 때문인데요, velog는 유입 경로와 전체 통계를 볼 수 없어서 사용하는동안 답답했습니다. 그리고 velog에 글을 올릴 때, 메모장으로 사용하기 위해 링크만 올리거나 두서없이 쓰기도 했는데 앞으로는 지식공유를 위한 강의글 처럼 써볼 생각입니다.

기타 2023.02.22