전체 글(34)
-
Event Driven Architecture - 이벤트 드리븐 아키텍처
개발을 하면서 정말 많이 쓰이는 아키텍처 패턴이라고 생각하는 이벤트 드리븐 아키텍처에 대한 내용을 간단하게 요약해보고자 합니다. 해당 내용을 파고들면 정말 끝이없는... 내용인 것 같습니다. C언어로 프로덕션 코드를 구현할 때도 직접 Queue로 구현해서 사용하곤 했었는데, Spring이나 NestJS등 고수준 프레임워크에서는 애너테이션 등으로 아주 간편하게 제공하고 있습니다. 무튼 그런 내용들은 각설하고 아키텍처의 개념에 대해서만 요약 정리를 해보겠습니다. 용어 정의 ED ( Event-driven ) 이벤트를 생성, 발생하고 발행된 이벤트를 필요로하는 수신자에게 전송되는 구조 이벤트를 수신한 수신자가 이벤트를 처리하는 형태의 구조 programming, architecture와 연결되어 다양한 정의로..
2022.12.07 -
[Kafka] Kafka Cluster Docker-compose로 구축하기
Kafka Cluster를 Docker-Compose로 구축하는 예제입니다. kafka 이미지를 Docker Hub에서 검색해보면 bitnami에서 제공하는 이미지가 가장 다운로드 횟수가 많습니다. 하지만 찾아보니 현재 kafka는 confluent라는 회사에서 실질적으로 유지관리 및 기능 개발을 진행하고 있다고 합니다. 그리고 Apache 재단에서 하는 kafka와 동일한 기능을 제공하지만, 버전 매핑 방식등이 조금 차이가 있어서 어떤 이미지를 사용할까 고민을 했는데, 일단 저는 현재 해당 오픈소스를 관리하는 회사의 이미지를 사용해야 된다고 생각하여 'confluentinc/cp-kafka' 이미지를 사용하였습니다. 이것도 일단 다운로드 횟수가 적지 않기에 사용에 무방하다고 생각합니다. ( bitnam..
2022.12.07 -
[ERROR] kafka cluster 구성 후 --zookeeper 옵션 사용 시 에러 발생
kafka 클러스터를 구성하고 토픽 리스트를 확인하거 토픽을 생성하는 과정에서 '--zookeeper' 옵션을 추가하는 경우 에러가 발생합니다. (예시 './kafka-topics.sh --describe --zookeeper locakhost:2181' 등 ) docker-compose를 사용하여 클러스터를 구성하였고 아래 이미지를 사용하였습니다. bitnami/kafka:latest bitnami/zookeeper:latest 아파치 카프카 공식 사이트에서 이미지 버전을 확인했을 때, bitnami에서 만드는 이미지들은 아파치 카프카 버전과 동일한 것으로 보입니다. 해당 이슈에 대해서 카프카 공식 도큐먼트를 찾아 보았습니다. 키워드는 'zookeeper option'으로 검색했고 아래와 같은 결과를 ..
2022.12.07 -
[TDD] TDD는 Test가 아니다. - 자바 플레이그라운드 with TDD, 클린코드
박재성님의 TDD에 대한 참여형 강의를 듣고 있습니다. 해당 내용을 정리하면서 TDD를 좀 더 체화하려고 합니다. 사실 TDD 보다는 그 외 여러가지 테크닉을 배우는 것도 중요하게 생각하고 있습니다. 그리고 생각보다 강의 내용대로 따라가려고 하는데, 뭔가 녹화 영상을 볼때는 '아 일케 하면 되겠군 ㅋㅋㅋ' 하다가도, 정작 혼자 해보려고하면 '이게 맞누?' 싶어서 진척이 너무 더딥니다. 하지만 12월까지는 이 부분을 꼭 체득하고 싶네요. TDD란? TDD = TFD(Test First Development) + 리팩토링 리팩토링이 중요하다. TDD는 테스트 기술이 아니라, TDD는 분석 기술이며, 설계 기술이다. Todo-List를 잘 만들어야 되며 이걸 잘 만든다는 것은 요구사항 설계를 잘 했다는 것이다..
2022.12.06 -
[알고리즘] 프로그래머스 스쿨 - 힙(Heap) 문제 풀이 ( 더 맵게, 디스크 컨트롤러, 이중우선순위 큐 )
힙과 관련된 문제 모음입니다. 힙은 특정한 규칙을 가지는 트리로, 우선 순위 큐를 구현하는 자료구조입니다. ( 최대 힙, 최소 힙) 그래서 대게 해당 문제들은 우선 순위큐를 사용하면 손쉽게 문제 풀이를 할 수 있습니다. 우선 순위 큐를 사용한는 케이스를 제 경험으로 정리하면 아래와 같습니다. 입력의 크기가 너무 커서, 입력과 동시에 정렬이 필요한 문제 ( Level 2 - 더 맵게, Level 3 - 이중우선순위큐 ) 그리디 알고리즘 적용에서 정렬이 필요한 경우 혹은 최대값, 최소값 기준 정렬 ( Level3 - 디스크 컨트롤러 ) 1번 경우에 백준 14729(칠무해)를 연관문제로 보면되고, 2번의 경우에는 컵라면, 순회강연 문제를 함께 참고하면 좋을듯합니다. 입력의 크기가 너무 커서 입력과 동시에 정렬..
2022.12.05 -
[알고리즘] 프로그래머스 예상 대진표 (레벨 2)
프로그래머스 레벨2 문제 중 '예상 대진표'라는 문제입니다. 문제 출처 : 링크 규칙 찾기 풀이 포인트 대진표 계산하는 문제입니다. 계속 틀리던 부분이 '경기를 진행해서 승부가 나는 것 까지' 연산을 해주어야 합니다. class Solution { public int solution(int n, int a, int b) { int answer = 0; while(true){ a = (a/2) + (a%2); b = (b/2) + (b%2); answer++; if(a == b) break; System.out.println( a + " " + b); // 테스트 케이스 7, 9, 27, 33이 틀리네. } return answer; } }
2022.12.05