yunki Kim Blog

「Do What You Love」

6장. 코틀린 타입 시스템

1. 널 가능성 널 가능성(nullability)는 NullPointerException 오류를 피할 수 있게 돕기 위한 코틀린 타입 시스템 특성이다. 최신 언어들은 널로 인한 문제를 최대한 방지하기 위해 널이 될 수 있는지를 타입 시스템에 추가해서 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지해서 실행 시점에 발생할 수 있는 예외의 가능성을 줄...

4장. 카프카 프로듀서

프로듀서는 카프카에서 메시지를 생산해서 토픽으로 메시지를 보내는 역할을 한다. 토픽으로 메시지를 보낼 때는 메시지를 토픽 파티션에 매핑하고 파티션의 리더에 요청을 보낸다. 이때 키 값을 정해서 키를 가진 모든 메시지를 동일한 파티션으로 보낼 수 있다. 정하지 않는다면 라운드 로빈 방식으로 파티션에 분배된다. 1. 프로듀서가 메시지를 보내는 세 가지 ...

5장. 카프카 컨슈머

프로듀서가 메시지를 생산해서 카프카의 토픽으로 메시지를 보내면, 그 토픽에서 메시지를 가져와 소비하는 것이 카프카 컨슈머의 역할이다. 컨슈머의 주요 기능은 특정 파티션을 관리하고 있는 파티션 리더에게 메시지 가져오기를 요청하는 것이다. 각 요청은 로그의 오프셋을 명시하고, 그 위치로부터 로그 메시지를 수신한다. 컨슈머는 가져올 메시지의 위치를 조정할...

3장. 카프카 디자인

1. 카프카 디자인 특징 카프카는 처리량에 중점을 두고 설계된 만큼, 높은 처리량, 빠른 메시지 전송, 운영 효율화 등을 위해 분산 시스템, 페이지 캐시, 배치 전송 처리 등의 기능이 구현되어 있다. 이 기능들을 하나씩 알아보자. 1. 1 분산 시스템 카프카는 분산 시스템이기에 유동적으로 서버를 늘릴 수 있다. 분산 시스템의 장점은 다음과 같다....

1장. 카프카란 무엇인가

카프카는 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼이다. 현재에는 많은 기업들이 자사의 빅데이터를 기반으로 사용자의 성향을 분석해 고객 행위를 예측하는 추천 기술에 관심을 가지면서, 빅데이터를 분석할 때 여러 스토리지와 분석 시스템에 데이터를 연결하기 위한 필수 도구로 인식되고 있다. 1. 카프카 탄생 배경 카프카는 링...

실시간 데이터 시스템 구조와 kinesis, MSK

1. 실시간 데이터 시스템 구조 실시간 데이터 시스템에 대해 이해하기 위해, 우선 배치 시스템 구조를 살펴보자. raw data storage는 배치 처리가 필요한 데이터를 저장하는 저장소이다. batch process는 저장된 데이터를 이용해 시간별, 일별로 통계 계산과 데이터 가공 작업을 수행하고 consumer가 이를 소비할 수 있...

4장. 클래스, 객체, 인터페이스

1. 클래스 계층 정의 1.1 코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메서드와 구현이 있는 메서드를 정의할 수 있다. 그리고 상태를 포함할 수 없다. 또 한, 자바와 같이 인터페이스는 원하는 만큼 구현할 수 있지만, 클래스는 오직 하나만 확장할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 interface ...

3장. 코드와 함께 춤을 (레거시 코드에 임하는 우리의 자세)

기술 부채를 상환하는 방법 업무를 진행하면서 조금씩 리팩터링하고, 변경 사항은 작고 독립적인 커밋과 PR로 만들자. 단기적으로 리팩터링은 기능 출시를 지연시키지만 장기적으로는 반대의 상황이 된다. 리팩터링과 기능 사이에 균형을 잘 잡아야 한다. 대규모 리팩터링을 위해 팀에 의논할 때, 다음과 같은 방법이 좋다. 상황을...

3장. 함수 정의와 호출

1. 코틀린에서 컬렉션 만들기 코틀린은 자체 컬렉션을 가지고 있지 않고 자바의 컬렉션을 그대로 사용한다. 이 때문에 자바 코드와 상호작용하기가 훨씬 쉽다. 다만, 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. 1 2 3 4 5 val set = hashSetOf(1, 7, 53) // create hash set val list = array...

2장. 역량을 높이는 의식적 노력(경쟁력을 갖춘 개발자가 되기 위해 스스로 해야 할 일)

실전에 앞서 익혀야 할 자기주도 학습 방안 본격적인 학습을 위한 몸풀기 입사 후 첫 몇 달간은 상황이 어떻게 돌아가는지를 파악하는 데 집중하자. 설계 회의, 온콜 교대 업무, 운영 이슈, 코드 리뷰 등에 참여하자. 직접 부딪혀보며 배우자 업무 초반 문서를 읽는 것도 중요하지만 실제 코딩을 하고 결과물을 배포하는 것도 중요하다. 실전...