이직을 하게 되면서, 기존에 자바만 사용하다가 처음으로 코틀린을 사용하게 되었다. 코틀린으로 작성된 코드를 읽는데, 지나치게 kotlin-specific 한 문법들이나 인지 부하를 초래하는 코드들로 인해 코드가 전혀 읽히지 않았다. 그래서 코틀린 공식 문서를 포함하여 책 3권 및 코틀린 관련 많은 영상들을 참고하여, 코틀린을 입문할 때 알면 좋은 내용들을 정리하였다. 1. 자바 개발자가 코틀린을 입문할 때 알면 좋은 내용들 모음[ 코틀린 공통 ]코틀린의 설계 목적컴퓨터가 인식할 수 있는 코드는 바보라도 작성할 수 있지만, 인간이 이해할 수 있는 코드는 실력 있는 프로그래머만 작성할 수 있다.- 마틴 파울러(Martin Fowler), 리팩터링 -“개발자가 코드를 작성하는 데는 1분..
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을 관리함 So..
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..