
1. 유용한 개발 관련 아티클 및 영상 #19How PayPal Serves 350 Billion Daily Requests with JunoDBPayPal의 JunoDB는 99.9999%의 가용성(99.9999%)을 갖는 데이터베이스임Juno DB란?분산 ke-value 저장소로, Go 언어의 동시성을 활용하여 수십만 개의 연결을 효율적으로 처리함매일 약 3,500억 건의 요청을 처리하며 로그인, 위험 관리, 거래 처리와 같은 중요한 기능을 담당함주로 주 데이터 소스 데이터베이스의 부하를 줄이기 위해 캐싱에 JunoDB를 사용함Juno DB의 주요 우선순위ScalabilityMSA 구조로 가면서 DB에 대한 연결 수가 증가하였고, 2가지 방식으로 이를 해결함클라이언트 연결이 한계에 도달하면 프록시를 추..

1. Redis와 LuaScript(레디스와 루아스크립트)를 활용한 슬라이딩 윈도우 구현하기분산 환경에서 5분 동안 특정 요청의 성공률이 50% 미만으로 떨어진 경우, fallback 로직을 수행해야 하는 요구사항이 있다고 하자. 이를 위한 다양한 구현 방식이 존재하는데, 레디스 기반으로 슬라이딩 윈도우를 구현해 해결할 수 있다. [ 요구사항 구현하기 ]먼저 현재 시간을 기준으로, 5분 동안의 성공률을 갱신해야 한다. 이를 위해 슬라이딩 윈도우 알고리즘을 사용할 수 있다. 슬라이딩 윈도우 알고리즘을 구현하는 다양한 방법이 있는데, 레디스의 Sorted Set을 사용하면 손쉽게 구현할 수 있다. 이는 다음과 같은 내용들을 바탕으로 구현하면 된다.성공과 실패를 저장하는 Sorted Set을 관리함Sor..

1. 유용한 개발 관련 아티클 및 영상 #18Bootstrap 개발자가 만든 제품 엔지니어링 도구 PierreBootstrap 개발자들이 Git 위에서 UX 레이어를 혁신해서 차세대 버전 컨트롤 서비스를 만들고 있음PM, 디자이너, 엔지니어가 각자의 도구를 사용해서 협업하기 마련인데, Pierre는 이 협업을 한 곳에 모아서 효율적으로 협업하도록 하고자 함Stop wasting engineering time(낭비되는 엔지니어링 시간의 중단)Tailored for engineering teams building product(제품을 빌드하는 엔지니어링 팀을 위한 맞춤 제작)More than just code review(코드 리뷰 그 이상)자체 CI 역시 제공하며, 코드 리뷰에 A..
1. Jackson ObjectMapper의 성능을 높여줄 Blackbird 모듈[ Blackbird 모듈이란? ]기존에 Jackson 라이브러리의 성능 향상을 위해 Jackson Afterburner 모듈이 사용되고 있었다. 하지만 Afterburner 모듈은 끔찍한 바이트코드 조작을 사용하고 있었고, 곧 지원이 중단되는 Unsafe.defineClass 를 사용하고 있었다. 즉, 최신 JVM(JVM 11+)와의 호환성이나 쓰기 접근 제한 등을 고려하여 노후화 징후를 보이고 있었던 것이다.따라서 이를 대체하기 위한 새로운 모듈이 등장하게 되었다. Jackson 2.1.2 릴리스(2020년 12월)와 함께 등장한 Blackbird 모듈은 뛰어난 성능 뿐만 아니라 새로운 구조(ex LambdaMetafac..
1. 유용한 개발 관련 아티클 및 영상 #17애플리케이션 아키텍처와 객체 지향 (KUSG 조용호님 발표)도메인 레이어를 설계하는 방법절차지향(트랜잭션 스크립트)다루어야 하는 데이터와 데이터를 조작하는 프로세스가 별도로 존재함애너믹 데이터 모델(도메일이 로직이 아닌 속성 만을 가짐)서비스들이 DAO들을 주입받고 절차적으로 작성함테이블과 모델이 1대1로 매칭되는 구조이며, DAO는 테이블 데이터 게이트웨이에 해당함객체지향(도메인 모델)프로세스와 데이터를 하나의 덩어리로 묶어서 생각하는 것객체지향 기반의 도메인 레이어 설계가 필요함주어진 책임을 수행하며 협력하는 객체들의 공동체 집합이며, 메시지로 협력함애플리케이션 계층: 애플리케이션 플로우에 대한 로직을 담당함, 애플리케이션 경계에 해당하며 도메인 로직의 재..