본문 바로가기

전체 글228

백준 23303번 java 풀이 올해도 연세대학교 프로그래밍 경진대회가 열렸다! 병철이는 원래 대회에 출전하여 상금을 타갈 생각을 하고 있었으나, 갑자기 출제진으로 끌려가게 되어버렸다. 출제진으로 끌려온 병철이에게 연세대학교 프로그래밍 경진대회는 지원을 받지 못하면 출제진이 사비로 상금을 지급해야 한다는 충격적인 소식이 들려왔지만, 다행히 지원을 받았기에 그런 대참사는 막을 수 있었다. 지갑이 털릴 위기를 벗어난 병철이는 바로 백준을 켜 D2 난이도의 문제를 풀었고, 대회 참가자들에게도 D2 난이도의 문제를 내려고 한다! 그러나 실력이 딸려 D2 난이도의 문제를 낼 순 없었기에, 그냥 문제 이름을 D2로 했다. 여러분들도 (이름만) D2급 문제를 풀어보자! 입력 첫 줄에 알파벳 대소문자 및 숫자, 그리고 공백으로 구성된 문자열이 들어온.. 2023. 10. 14.
실시간 시세 시스템아키텍처에 대한 고민, feat.토스증권 개요 현재 진행 중인 백엔드 프로젝트에서 카프카를 활용한 실시간 비트코인 시세를 어떻게 구현을 해야 하는지 많은 고민을 하게 되었고토스증권의 시스템아키텍처를 통해서 힌트를 얻을 수 있었다. 출처 - youtubehttps://www.youtube.com/watch?v=SF7eqlL0mjwhttps://www.youtube.com/watch?v=DQFroVSkqJM 토스증권의 실시간 및 누적 시세 시스템 아키텍처토스증권의 실시간 시세 시스템 아키텍처는 크게 국내시세와 해외시세로 나누어져 있는 것을 볼 수 있다.기존의 증권 시스템들과의 차이점은 카프카를 활용하여 실시간 시세를 클라이언트에게 전달한다는 점이 있다. 또한 가공 서버에서는 누적시세와 실시간시세로 나뉘며 누적시세는 과거 데이터 활용을 위해서 my.. 2023. 10. 14.
[책 리뷰] 자바 개발자를 위한 데브옵스 툴 - 스티븐 친,멜리사 맥케이 들어가면서 최근 백엔드 공부를 하면서 API개발만 할 줄 아는 개발자가 되기보다 데브옵스 환경에 대한 넓은 시야와 이해도를 가지고 있는 백엔드 개발자가 되고 싶어서 이 서적을 구매했고 데브옵스 환경의 트렌드와 변화를 읽고 내가 앞으로 자바 개발 공부를 할 때 어떤 식으로 활용할 수 있을지에 대한 식견을 얻으려고 노력했다. 좋았던 점 데브옵스의 개념부터 보안, 테스트, 쿼커스, 실제 기업들의 사례 등 트렌디하고 많은 내용을 다루어서 데브옵스에 대한 시야를 넓힐 수 있어서 좋았다. 그리고 github를 실습하면서 책의 깃허브 레포지토리에 visitor log를 남기는 내용이 있었는데 머지 되지는 않았지만 전세계에서 이 책을 읽는 다양한 사람들이 visitor log를 남긴 것을 구경하기도 하고 내가 직접 v.. 2023. 10. 8.
Spring-Boot + redis + kafka로 대용량 트래픽을 관리해보자 이 내용은 이전에 포스팅하였던 LINE의 HotChat에 대응하는 시스템 아키텍처를 직접 구현해본 경험을 글로 작성하였습니다. 들어가면서.. 이 프로젝트는 Kafka와 Redis의 활용법을 익히고 갑작스럽게 트래픽이 증가하는 경우 대비할 수 있는 로직에 대해서 공부하기 위해서 진행하였습니다. 프로젝트의 가정 Kafka 이벤트 기반 채팅 시스템에서 임계점을 넘는 대규모 FETCH 트래픽이 발생했을 때 redis와 kafka, 스로틀링을 활용하여 트래픽을 잡는다. 시스템 아키텍처 크게 클라이언트(react), ChatServer, PublishServer로 나뉘며 각각 클라이언트는 react를 활용해 채팅방을 구현하였고 ChatServer는 클라이언트에서 메세지나 공감 이벤트가 발생하였을 때 카프카 클러스터.. 2023. 10. 5.
LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법 feat.Kafka 최근 새롭게 Join한 백엔드 스터디에서 기존에 사용해보지 못했던 기술들을 활용하는 방법들을 공부하고 기록으로 남기기 위해서 Kafka에 대해서 공부를 했고 모두 어느 정도 알고 있는 원리를 정리하기보다는 실제 기업에서는 어떤 방식으로 Kafka가 운영되고 어떤 목적으로 사용되는지 정리를 하기 위해서 Line의 오픈챗 서버에서 Kafka가 어떻게 활용이 되었고 어떤 방식으로 100배 급증하는 트래픽을 해결하였는지 정리를 하기 위해서 글을 작성하게 되었습니다.이번 글에서는 Line의 개발자분들이 오픈챗의 핫챗을 통해 100배 급증하는 트래픽을 어떻게 Kafka를 활용하여 해결하게 되었는지 설명하겠습니다. 핫챗이란? 만약 한 오픈챗에 참여한 5천 명의 사용자가 모두 동시에 활발하게 메시지를 주고받는다면 어.. 2023. 9. 21.
Github Action, Kubernetes 설정파일 관리 with Argo-CD 쿠버네티스에 스프링부트 프로젝트를 배포하고 Github Action과 Argo-CD를 통해서 CI/CD도 거의 완료 단계에 들어가게 되었다. 그러나 로컬에 들어있는 application.yml 파일들이나 FCM을 동작하게 해주는 FCM 인증서 JSON 파일은 깃 레포지토리에서 관리를 하고 있지 않았기 때문에 CI/CD 파이프라인을 타게 되면 설정이 빠진 스프링 프로젝트가 배포되는 문제가 있었다. 그래서 어떻게 하면 application.yml에 들어있는 DB 중요정보나 FCM 인증서를 레포지토리에서 관리하지 않고도 CI/CD 파이프라인을 통해서 문제없이 설정 정보까지 배포를 할 수 있을까 고민을 하게 되었다. 먼저 application.yml에 들어있는 중요정보들은 쉽게 해결할 수 있었다. 쿠버네티스에.. 2023. 9. 20.