규턴의 개발블로그
article thumbnail
[KafKa] 카프카 클러스터(Cluster)와 브로커(Broker)
data/kafka 2022. 9. 1. 14:59

브로커? 클러스터? 주키퍼? 브로커 브로커는카프카 클라이언트와 데이터를 주고 받기 위해 사용하는 주체입니다. 1대의 서버에는 하나의 브로커가 올라옵니다. 클러스터 클러스터는 다음사진과 같이 broker의 집합이라고 할 수 있습니다. 즉 cluster는 kafka의 broker를 관리하는 역할을 합니다.그러면 클러스터에는 여러개의 브로커가 존재하는데, 이렇게 많은 브로커를 운영하는 이유는 무엇일까요?바로 데이터를 안전하게 보관하기 위해서입니다. 예를들어 사진과 같이 Broker1, Broker2, Broker3은 같은 데이터를 가집니다. 즉 하나가 리더가 되어 나머지 Broker들을 복제합니다.해당 설명은 Kafka의 전체적인 구조를 설명하고 복제에 대해 자세하게 설명하겠습니다. 주키퍼 주키퍼는 Kafka..

article thumbnail
[KafKa] KafKa란?
data/kafka 2022. 8. 31. 15:45

KafKa가 생겨난 이유 초기 어플리케이션은 간단한 구조로 이루어져있었습니다. 하지만 급속도로 발전을 하면서 요즘 많이 들리는 MSA 아키텍쳐라고 한번쯤 들어보셨을 겁니다. 여러개의 어플리케이션이 서로 상호작용을 하며 구조가 점점 복잡해졌습니다. 다음 사진과 같이 말이죠. 이후 링크드인에서 카프카라는것을 만들어냅니다. 즉 데이터 흐름(flow)를 한곳에 모아 중앙관리 형태의 구조를 만들어냈습니다. 사진만 봐도 dataflow관점에서 확연한 차이가 나는것을 확인할 수 있습니다. MQ-메세지 큐 MQ는 들어본사람도 있고 들어보지 못한 사람도 있을겁니다. Message-Queue라고 하는데, 자료구조에서 Queue형태는 다들 아실거라고 생각합니다. FIFO(First-In-First-Out)이죠 kafka도 ..

article thumbnail
[트러블슈팅] 문제 해결 과정(1)- RDBMS에 JSON데이터 적재하기

Json파일을 db에 넣기-test 우리가 가지고 있는 api에서 호출했을때 과연 json파일이 잘 저장될까 의문이었다. kafka로 produce/consume을 하기전에 실제 db에 json파일이 저장되는데 문제가 없는지 test를 해보았다. 소스코드 및 과정 @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Table(name = "game_record_json") public class GameRecordJson { @Id @GeneratedValue @Column(name = "game_record_json_id") private Long id; @Column(name = "json", columnDefinition = "l..

[트러블 슈팅]라이엇api 호출 delay

문제정의 현재 라이엇api를 이용하여 유저의 20개 전적을 불러온다. 근데 로직이 이상한건지 한번 불러오는데 5초 이상이걸린다. 만약 멀티서치를 할경우 5명의 전적을 한번에 검색하는데 1분은 걸리고 503에러도 발생 사실 수집 및 원인추론 { "latestTwentyRecords": { "averageKill": "12.2", "lose": "10", "averageKda": "3.58", "draw": "0", "winRate": "50%", "win": "10", "averageAssist": "14.5", "averageDeath": "7.5" }, "gameRecord": [ { "death": "6", "csPerMiutes": "7.1", "playtime": "30분53초", "semiRun..

article thumbnail
[SSL/TLS] CA를 이용한 서버 인증
cs/tls 2022. 8. 29. 15:34

서버 인증 이전에 클라이언트와 서버는 각각의 공개키를 공유하고 이를 바탕으로 대칭키를 만든다고 하였습니다. 이후 대칭키로 데이터를 암복호화 하여 통신한다고 했는데 가장 중요한건 클라이언트가 서버를 어떻게 믿을것인가 입니다. 이를 가능하게 하는것이 인증서를 통한것입니다. 인증서를 통해 서버가 믿을만한 놈인지 구별할 수 있습니다. 인증서 이런 화면 많이 본적 있을겁니다. 이것이 https 통신을 하고 있다는 의미인데요. 정확히는 ssl/tls인증방식을 사용하고 있다는것입니다. 인증서는 다음과 같은 정보를 가지고 있습니다. 1. 서비스 정보(인증서를 발급한 CA, 서비스의 도메인 등) 2. 서버 측 공개키(공개키, 공개키 암호화 방법) 3. 지문, 디지털 서명 등 여기서 처음볼 수 있는 CA, 지문, 디지털 ..

article thumbnail
인턴 하계학기 후기
일상 및 회고/인턴 2022. 8. 28. 18:26

현장실습-학교연계형 학교에서 제공하는 코업이라는 수업은 인턴경험을 함과 동시에 학점을 주는 수업이다. 이러한 수업이 있는지만 알았는데 직접 알아보게 되니 신기했다 마침 내가 가려고하는 백엔드분야로 "NICE평가정보"에서 뽑고 있었다. 지원을 하게되었고 지금생각해보면 어떻게 붙었는지 신기하긴하다. 스펙이 부족했는거같은데 현재 진행중 처음 사원증을 받았을때 정말 실감이 난거 같다. 솔직히 처음 1~2주에서는 신기한 부분이 많았다. 내가 개발하고 있는건 하나의 어플리케이션 띄우고 디비 하나 사용하고 api 만들고 이게 끝이었는데 오픈소스 솔루션을 사용하기도 하고 많은 세미나를 가지는것이었다. 그리고 내가 인턴하면서 가장 중요하게 생각된건 내가 스타트업 회장이 될게 아니면, 대부분 개발자는 기존에 있는 프로그램..

article thumbnail
[SSL/TLS] SSL/TLS 란?
cs/tls 2022. 8. 24. 15:37

SSL/TLS? 한줄요약: SSL과 TLS는 거의 같은거다. SSL(Secure Socket Layer) ssl은 브라우저 간의 통신 시 데이터를 주고받을때 암호화를 하여 안전하게 통신하기 위한 표준 규약입니다. 다음 그림과 같이 Transport Layer 위에 SSL Record Protocol 이 존재하면 TCP/IP 통신시에 해당 규약을 통해 암호화된 데이터를 교환합니다. 여기서 Transport layer가 뭔가 TLS와 연관이 있는거 같습니다. TLS(Transport Layer Socket) 처음에 네스케이프에 의해 발명된 SSL이 표준화가 되며 바뀐 이름이 TLS입니다. TLS 1.0은 SSL 3.0을 계승했습니다. 근데 아직 TLS라는 이름은 생소하여 SSL이 더 널리 쓰이긴 합니다. 즉..

article thumbnail
[IMDG] Redis vs Hazelcast
data/imdg 2022. 8. 17. 11:21

IMDG? IMDG란 In-momory-data-grid로 아래 사진과 같은 형태의 아키텍쳐 입니다. 다음 그림과 같이 여러개의 메모리를 grid 형태로 보관하며, 메모리를 데이터베이스와 같은 형식으로 사용하는것입니다. 당연히 memory를 데이터 베이스로 사용한다면 더 빠르다는 장점이 있습니다. 또한 예전에는 memory의 크기가 작다는 한계가 있었지만, 기술적인 발전으로 memory의 크기가 상대적으로 증가하고 위와 같은 형태의 여러개의 memory를 하나의 memory처럼 사용하여 빠른속도로 데이터를 read/write를 할 수 있습니다. IMDG 사용 예제 Hazelcast Terracotta Enterprise Suite VMware Gemfire Oracle Coherence Gigaspace..