1. 유용한 개발 관련 아티클 및 영상 #23CTO가 커리어를 걸고 비트 레벨까지 내려가서 DB를 해킹했던 이야기“쿠키런: 킹덤”은 메인 데이터베이스로 CockroachDB를 사용하는데, 전통적인 RDBMS처럼 ACID 특성을 가지고 있으며, SQL 기반의 트랜잭션 처리가 완벽하게 작동하는 분산 데이터베이스임CockroachDB 클러스터는 기본적으로 Raft 기반의 합의 알고리즘을 사용하고, 가장 높은 수준의 트랜잭션 일관성을 목표로 설정되어 있음DB 스케일업 작업 전에 안전장치를 설정하기 위한 작업을 하던 중 의도치 않은 설정 이슈로 인해 절반 이상의 노드들이 비일관성을 탐지하고 에러가 발생하면서 클러스터에서 제외되기 시작하여 다운되었음CockroachDB 엔지니어 팀은 진단을 완려하고 난 후 복구가 ..
1. 유용한 개발 관련 아티클 및 영상 #22코루틴 입문용 영상(비동기로부터 우리를 구원해줄 코루틴)코루틴에 대하여비동기 프로그래밍을 위한 동시성 프로그래밍 라이브러리코루틴은 기존 서브 루틴과는 다르게 루틴에서 빠져나오는 탈출구가 여러 곳이 존재함따라서 비동기 프로그래밍에서 탈출구를 통해 다른 작업을 할 수 있으며, 결과가 반환되면 다시 와서 작업하는 방식으로 동작함이를 통해 동기 방식의 코드로도 연속적인 작업이 가능해짐코루틴의 장점코루틴은 스레드 위에서 작업을 처리하는 경량 스레드임코루틴은 JVM Heap 영역에 생성되며, 스레드의 메모리 공간을 사용하기 때문에 컨텍스트 스위치 비용이 상대적으로 적음코루틴 스코프코루틴 스코프는 생명주기를 관리하는 개념으로, 코루틴의 실행을 구조화하고 실행되는 컨텍스트를..
1. 유용한 개발 관련 아티클 및 영상 #21JAVA 10에 도입된 지역변수 타입 추론에 대한 스타일 가이드타입 추론에 대하여타입 추론은 간결함을 가능하게 해주지만, 중요한 타입 정보를 생략하여 가독성을 떨어뜨림모든 기능과 마찬가지로 판단력을 가지고 사용해야 하며, 언제 사용해야 하고 언제 사용하지 말아야 하는지에 대한 포괄적인 규칙은 없음이 문서의 목표는 주변 코드가 변수 선언에 미치는 영향을 살펴보고, 몇 가지 장단점을 설명하고, 변수의 효과적인 사용을 위한 지침을 제공하는 것임코드 작성의 원칙들코드를 읽는 것이 작성하는 것보다 중요하다코드는 작성하는 것보다 읽는 경우가 훨씬 더 많음따라서 코드의 작성은 원저자가 아닌, 미래의 독자에게 미치는 영향에 따라 결정되어야 함코드는 로컬 추론 시에 명확해야 ..
1. 유용한 개발 관련 아티클 및 영상 #20에이비엔비 아키텍처의 역사(A Brief History of Airbnb’s Architecture)초기 버전(RoR 기반의 모놀로식 아키텍처)이러한 구조로 인해 다음과 같은 장점들을 느낄 수 있었음시작하기 쉬우므로 초기에 반드시 필요한 구조였음민첩한 개발에 적합했음복잡성을 관리할 수 있었음하지만 엔지니어링 팀이 빠르게 커짐에 따라 다음과 같은 상황들이 생겼음코드들이 더욱 긴밀하게 결합되기 시작했고 데이터의 소유권이 불분명해졌음예를 들어, 어떤 테이블이 어떤 애플리케이션 기능에 의해 소유되는지 파악하기가 어려웠음모든 개발자가 애플리케이션의 모든 부분을 변경할 수 있게 되면서 변경 사항을 추적하고 조율하기가 어려워졌음이로 인해 다음의 문제들이 발생했음항상 수백 ..
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가지 방식으로 이를 해결함클라이언트 연결이 한계에 도달하면 프록시를 추..