Hongveloper

    리플리케이션

    브로커의 장애에도 불구하고 연속으로 안정적인 서비스를 제공하고 데이터 유실을 방지하기 위해서 리플리케이션을 지원 kafak-topics.sh --bootstrap-server peter-kafka01.foo.bar:9092 --create --topic peter-test01 --partitions 1 --replication-factor 3카프카는 컨트롤러 브로커를 통해서 클러스터의 상태를 관리하고 있음 - 컨트롤러 브로커는 클러스터에 있는 모든 브로커의 메타데이터를 유지하고 관리하는 역할kafka-topics.sh --create 명령을 실행하면, 지정된 브로커(peter-kafka01.foo.bar:9092)로 요청요청을 받은 브로커는 컨트롤러 브로커에게 토픽 생성 요청을 전달컨트롤러 브로커는 현재..

    카프카 기본 용어 정리

    카프카 공부를 시작하기 전 용어에 대한 개념부터 정리해봅니다.레코드(=메세지)관계형 데이터베이스에서 로우와 비슷한 개념카프카 데이터의 기본 단위단순한 바이트의 배열토픽관계형 데이터베이스에서 테이블과 비슷한 개념파일시스템의 폴더와 비슷한 개념파티션하나의 토픽이 한 번에 처리할 수 있는 한계를 높이기 위해서 토픽 하나를 여러 개로 나눠 병렬처리가 가능하도록 만든 것파티션에 메시지가 쓰여질 때는 추가만 가능(append-only)오프셋파티션에 메시지가 저장되는 위치리플리케이션파티션을 여러 개로 복제해서 카프카 클러스터 내 브로커들에게 분산시키는 동작을 의미브로커 개수 인 경우에는 토픽을 생성할 때 InvalidReplicationFactorException 에러가 발생프로듀서PUB/SUB 시스템에서 발행자를 ..

    멱등성

    네트워크 통신에서는 아래와 같은 예외적인 상황이 존재할 수 있습니다.같은 요청이 짧은 시간에 두 번 이상 발생한 경우네트워크 순서가 뒤집힌 경우각종 타임아웃이러한 상황에 맞서 요청하는 쪽은 알 수 없는 에러를 처리해야 하며, 요청 받는 쪽은 명등성 API를 제공해야 합니다. 아래와 같은 주문요청에 대한 흐름이 있다고 가정합니다. 알 수 없는 에러 처리대표적으로 read timeout 으로 인해서 응답을 받지 못하였으면, 해당 요청이 성공했는지 실패했는지 명확하게 판단하기 어렵습니다. 주문서버가 결제 요청을 했을 때 결제 서버에서는 성공했지만 주문 서버에서 응답을 제대로 받지 못하여 실패처리로 했다면 결제는 됐는데 주문처리가 되지 않은 이상한 상황이 연출됩니다. 이에 따라서 클라이언트에서 할 수 있는 방..

    scala trait vs kotlin interface

    캡슐화(encapsulation) 관점에서 보면 Scala의 trait와 Kotlin의 interface는 내부 구현(특히 상태와 헬퍼 로직)을 얼마나 감출 수 있느냐에 큰 차이가 있습니다. 상태(state) 은닉과 접근 제어scala traitval/var 필드를 직접 선언하고, private 또는 private[this] 로 접근을 제한할 수 있습니다.메서드도 private[packagename], protected 등 세밀한 가시성을 줄 수 있어서, 외부에는 오직 “공개하고 싶은 시그니처”만 보이도록 설계할 수 있습니다.trait Counter { private var count: Int = 0 // 외부에서 보이지 않는 상태 def inc(): Unit = count += 1 ..

    카카오페이 경력 공채 합격 후기

    예전부터 마음 속에 항상 네카라쿠배 중 하나의 회사에 가고 싶은 욕심이 있었습니다. 네카라쿠배뿐만 아니라 이외의 많은 회사에 지원하고 탈락하였지만 포기하지 않고 할 수 있다라는 생각으로 노력한 끝에 좋은 결과를 얻을 수 있었던 것 같습니다. 매번 다른 사람들의 합격 후기를 보면서 부러움과 동시에 많은 자극을 받아 갔었는데 지금 생각해보면 합격 후기 글이 나태해진 스스로를 다시금 정신차리게 하는데 꽤나 효과가 있었던 것 같습니다. 미래의 내가 프로그램 개발에 권태기를 겪고 있을 때 해당 글을 읽으면서 다시 제자리로 돌아갈 수 있으면 좋겠다라는 마음가짐으로 합격 후기를 남겨보고자 합니다.내 경력 되돌아보기2017년에 티몬이라는 커머스 회사에 처음 입사하였습니다. 인턴으로 입사하여 정규직으로 전환이 되었는데 ..

    AWS EC2 Java 설치

    Java 설치 가능한 리스트 검색 yum list java* 로컬 개발 환경에서 java11 버전을 사용하고 있기 때문에 java-11-amazon-corretto.x86_64를 설치합니다. 설치 sudo yum install java-11-amazon-corretto.x86_64 확인 java -version

    취해있으면 기회가 와도 잡을 수가 없다.

    요즘 난 조금 취해있는 것 같다. 그게 꼭 알콜이 들어간 어떤 것에 취해 있는 것은 아니다. 시간을 허투루 보내고 있다. 무기력함에 취해 있는 것이다. 왜 난 지금 취해있을까? 지금 이렇게 허송세월을 보내고 있어도 괜찮을걸까? 무엇이 날 이렇게 만들었을까? 난 분명 3주전까지 최선을 다해서 살고 있었다. 그리고 그렇게 가고 싶었던 네이버 최종면접에서 탈락하고 어떤 점이 부족한지를 명확하게 파악해서 더 좋은 곳에 가겠다고 다짐했다. 그렇게 노션에 계획이란 계획은 다 세워놓고 지금 나는 멍하게 취해있다. 요즘 노력이란 단어가 무색할 만큼 세상이 많이 변했다. 노력이란 단어로 이제는 엄청나게 올라버린 집값을 따라잡을 수는 없다. 그렇다고 아무것도 안하고 있을 순 없다. 취해있으면 기회가 와도 잡을 수가 없다...

    1. 도메인 모델 시작

    1.1 도메인이란? 내가 만들고 있느 서비스 혹은 소프트웨어가 영향력을 미치는 곳이며 즉 소프트웨어가 어떠한 문제를 해결하고자 하는 영역을 말합니다. 도메인은 다시 하위 도메인으로 나눌 수 있습니다. 하지만 도메인마다 모두 고정된 하위 도메인이 존재하는 것은 아닙니다. 쇼핑몰을 운영하고 있다면, E-Commerce가 나의 도메인 영역이 되는 것입니다. 그리고 쇼핑몰은 회원, 카테고리, 주문, 상품 등의 하위 도메인이 존재합니다. 모든 온라인 쇼핑몰이 고객 혜택을 제공하지 않으며 규모가 작은 업체는 엑셀과 같은 도구를 이용해서 수작업으로 정산을 처리할 수도 있습니다. 1.2 도메인 전문가와 개발자 간 지식 공유 코딩에 앞서 요구사항을 올바르게 이해하는 것이 중요합니다. 요구사항을 제대로 이해하지 않으면 변..

    JWT란?

    JSON Web Token 이란? JSON Web Token은 아래와 같은 형태로 보여집니다. (가독성을 위해서 개행이 포함됐습니다.) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9. TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 위 문자열은 아주 간결하고, claim들을 출력(표현)할 수 있도록 대표하며, 문자열 자체의 진위를 검증하는 서명을 포함하고 있습니다. JWT("jot")는 당사자 간(Server ↔ Client, MSA 등)에 정보(claims)를 JSON 객체로 안전하게 전송하기 위한 간결한 개방형 표준(RFC 75..

    [프로그래머스] 124나라의 숫자

    [124나라의 숫자] https://programmers.co.kr/learn/courses/30/lessons/12899 풀고 느낀점 내 머리로 풀 수 없는 문제였습니다. 한 2시간 고민하다가 구글링해서 풀이법을 봤습니다. Level 2 문제였는데 풀지 못하니 살짝 현타가 왔습니다. 3진법을 응용한 문제였습니다. 10진법의 값을 몫이 0일때까지 나누다가 나머지가 0인 경우 4로 대체하고 몫을 1만큼 빼주면 됩니다. 좀 더 내공을 쌓아야할 것 같습니다. /** * 124나라의 숫자 * https://programmers.co.kr/learn/courses/30/lessons/12899 */ public class P_12899 { public static void main(String[] args) { ..