2020/01
-
빅 오 표기법 : 알고리즘 성능을 표기하는 방법개발자 라이프 2020. 1. 14. 21:18
들어가며 이번 글은 알고리즘 연산 수를 수치로 나타내는 방법인 빅 오 표기법과 대표적인 시간 복잡도를 알아봅니다. 이 글은 책 리얼 월드 알고리즘을 바탕으로 정리했습니다. 빅 오 표기법 : 알고리즘 성능을 표기하는 방법 알고리즘의 성능을 고려하는 방법 알고리즘의 성능은 입력에서 출력까지 수행하는 연산 수에 따라 결정됩니다. 이러한 연산 수를 알고리즘의 실행 시간이라고도 말합니다. 우리는 이 알고리즘 실행 시간을 이야기할 때, 일반적으로 입력 데이터 n이 무한히 클 때를 염두 합니다. 이렇게 입력 데이터가 무한히 증가할 때, 알고리즘의 연산 수(성능)를 점근적 실행 시간(asymptotic running time)이라고 합니다. 알고리즘의 점근적 실행 시간은 몇가지 표기법을 사용하여 표현하는 데, 이 중 ..
-
로컬에 주키퍼, 카프카 설치하기 (Standalone)개발자 라이프/카프카 2020. 1. 14. 21:04
들어가며 이번 글은 주키퍼와 카프카를 로컬에 설치하는 방법에 대해 알아봅니다. 로컬에 설치하기 때문에 주키퍼와 카프카 모두 standalone 방식으로 구성합니다. 로컬에서 개발 환경을 구성하고 싶으신 분들은 참고하시면 되겠습니다. :) 또한 설치하는 주키퍼와 카프카의 설정은 최소 설정입니다. 혹여나 커스텀한 설정이 필요하신 분은 설정 파일을 별도로 수정하시면 됩니다. 기본적인 것들 Java 기존 설치 확인 javac -version OpenJdk 설치 sudo yum install java-1.8.0-openjdk-devel.x86_64 -y 정상 설치 확인 javac -version wget 기존 설치 확인 yum list installed | grep wget 설치 sudo yum install w..
-
카프카 운영 - Partition Reassign개발자 라이프/카프카 2020. 1. 14. 20:52
들어가며 카프카의 파티션(partition)은 실제로 메세지에 대한 발행과 소비를 담당합니다. 그렇기 때문에 파티션의 수, 브로커 내의 파티션 위치, 파티션 복제 계수 등 파티션에 관련된 설정은 카프카 운영에 있어 가장 중요한 요소입니다. 이번 글은 브로커 내에 분포되어 있는 파티션들의 설정을 변경하는 파티션 재설정(partition reassign)하는 방법에 대해 다뤄봅니다. 들어가기에 앞서 주의사항이 있습니다. 파티션의 재설정은 컨슈머 리밸런싱 등 카프카 내부의 많은 작업을 유발합니다. 그렇기 때문에 정상적인 운영 중에는 재설정을 추천하지 않습니다. Partition Reassign 파티션 재설정에는 파티션의 브로커 위치와 복제 계수를 변경할 수 있습니다. 본 글에서는 브로커 위치를 변경해보는 것을..
-
카프카 운영 - Preferred Replica Election개발자 라이프/카프카 2020. 1. 14. 20:21
들어가며 브로커의 장애는 카프카 운영에서 발생하는 가장 흔한 장애입니다. 이번 글은 브로커 장애로 발생할 수 있는 복제 파티션의 역할 변경과 Preferred Replica Election 방법에 대해 설명합니다. Preferred Replica Election Leader & Follower 토픽은 파티션 단위로 나눠지고, 파티션은 복제 계수(replication factor)에 따라 복제 파티션을 구성합니다. 복제 파티션들은 하나의 Leader(리더)와 그 외의 Follower(팔로워) 형태로 역할을 나눠 구성합니다. 리더 파티션은 복제된 파티션 중 유일하게 메세지 쓰기와 읽기 작업을 담당하여 수행하며, 팔로워들은 리더가 쓰기 작업을 완료한 메세지들을 복제(replication)합니다. 혹시 모를 장..
-
[Kafka 101] 컨슈머 그룹 리밸런싱 (Consumer Group Rebalance)개발자 라이프/카프카 2020. 1. 14. 20:11
들어가며 카프카를 운영하다 보면 여러 상황을 맞이하게 됩니다. 특히 성능 향상을 위해 특정 토픽의 파티션 수를 증가하거나 혹은 컨슈머 그룹에 컨슈머를 추가하는 경우가 있습니다. 하지만 운영 중인 카프카에 위와 같은 작업을 아무런 인정사정없이(?) 실시하면 일시적인 메시지 처리 불가 등 예상치 못한 상황을 맞이할 수 있습니다. 이와 관련된 것이 리밸런싱(Rebalance, Rebalancing)입니다. 본 글에서는 리밸런싱에 대해 알아보고, 어떤 상황에서 발생하는 지 알아봅니다. 그리고 나아가 관련한 유의점에 대해 설명합니다. Consumer Group Rebalance 1. 리밸런싱이란? 컨슈머 그룹 내의 컨슈머들은 자신들이 읽는 파티션의 소유권을 공유합니다. 즉, 하나의 컨슈머 그룹에서 컨슈머 A가 담..
-
2019년 회고개발자 라이프 2020. 1. 14. 18:02
들어가며 2019년을 마무리하는 시점입니다. 올해의 저는 무엇을 했고, 얼마나 성장했는지 조그맣게 회고를 남깁니다. 2019년 회고 첫 입사 올해 초에 첫 직장에 입사하여 곧 1년을 바라보고 있습니다. SI 프로젝트를 2개 참여하면서 나름 개발에 대한 역량도 길렀다고 생각합니다. 그 과정 중에서 몇가지 느꼈던 것을 짧게 정리하자면, 어쩌면 TDD는 SI 프로젝트에 적합하지 않을 수도 있겠다. DDD start는 개발 역량의 기초를 다듬는 데에 최고인 책이다. 커뮤니케이션은 정말 한 끝 차이다. 항상 공식 채널로 하자. 금요일 날 배포는 자멸 행위다. 등이 있었습니다. 물론 회사 생활을 하면서 개발 뿐만 아니라 나름의 비지니스 매너도 배우게 되었습니다. 다른 팀원분께 이슈를 공유하거나, 혹은 공유 받는 방..