코틀린을 돌아보며1
코틀린을 돌아보자1 코틀린을 마지막으로 한 것이 7개월 전이니, 문법을 다시 한번 정리해보고자 합니다. Open 자바의 클래스에 접근 제한자를 명시하지 않는다면 package-private 로 간주됩니다. 즉, 같은 패키지 내의 다른 클래스들에만 접근이 허용됩니다. 반면, 코틀린에서는 클래스와 메소드가 기본적으로 final 클래스로, 상속을...
코틀린을 돌아보자1 코틀린을 마지막으로 한 것이 7개월 전이니, 문법을 다시 한번 정리해보고자 합니다. Open 자바의 클래스에 접근 제한자를 명시하지 않는다면 package-private 로 간주됩니다. 즉, 같은 패키지 내의 다른 클래스들에만 접근이 허용됩니다. 반면, 코틀린에서는 클래스와 메소드가 기본적으로 final 클래스로, 상속을...
락을 활용한 동시성 이슈를 해결해보려고 합니다. 락을 활용해서 멀티 쓰레드 환경에서 발생할 수 있는 동시성 이슈를 해결해보고자 합니다. 실험 환경은 다음과 같습니다. 환경 버전 MySQL 8.2.0 Spring Boot ...
트랜잭션 격리 수준 테스트 트랜잭션 격리 수준에 따라서 어떤 동시성 이슈가 발생하는지 테스트해보고, 그 결과를 공유하고자 합니다. 실험 환경은 다음과 같습니다. 환경 버전 MySQL 8.2.0 Spring Boot 3.2...
합리적으로 AWS 운영을 해보자 AWS Lambda 람다를 이용해서 특정 시점에, 특정 명령을 내릴 수 있도록 구성할 수 있음 서비스 한도 리소스 사용량과, 서비스 한도를 트래킹하면서, 특정 시점에 알림을 구성할 수 있다. 예를 들어, Trusted Advisor 에서는 80 % 이상의 사용률일 때 알림이 온다. 그러나 TrustedAdvis...
증권 거래소 증권 거래 101 브로커 대부분의 개인 고객은 브로커 시스템을 통해 거래소와 거래한다. 로빈후드, 피델리티 등이 유명한 브로커 회사다. 브로커 시스템은 개인 사용자가 증권을 거래하고 시장 데이터를 확인할 수 있도록 편리한 사용자 인터페이스를 제공한다. 기관 고객 기관 고객은 전문 증권 거래 소프트웨어를 사용한다. 지정가 주문 ...
전자 지갑 전자 지갑을 통한 송금 시스템을 설계해 보자. 인메모리 샤딩 지갑 애플리케이션은 모든 사용자 계정의 잔액을 유지하는데, 이를 가장 쉽게 나타낼 수 있는 자료 구조는 키-값 저장소다. 레디스 노드 클러스터를 구성해서 사용자의 데이터를 저장할 수 있을 것이다. 클러스터를 구성하는 경우, 높은 가용성을 보장하는 전문 저장소 주키퍼를 레디스...
결제 시스템 기능 요구사항은 다음과 같다. 대금 수신 흐름 : 결제 시스템이 판매자를 대신하여 고객으로부터 대금을 수령한다. 대금 정산 흐름 : 결제 시스템이 전 세계의 판매자에게 제품 판매 대금을 송금한다. 대금 수신 시스템 구성 요소 결제 서비스 결제 서비스는 사용자로부터 결제 이벤트를 수락하고 결제 프로세스를 조율한다. 결제...
S3 와 유사한 객체 저장소 저장소 시스템 저장소 시스템에는 3가지 있다. 블록 저장소 : HDD 나 SSD 처럼 서버에 물리적으로 연결되는 형태의 드라이브. raw block 을 서버에 volume 형태로 제공한다. 파일 저장소 : 파일과 디렉토리로 추상회된 데이터를 관리한다. 데이터는 계층적으로 구성되는 디렉터리 안에 보관된다. ...
가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 (8장) 의 내용 중, 인상적이었던 부분을 발췌 및 요약합니다. 분산 이메일 서비스 이메일 101 이메일을 주고받는 프로토콜은 무엇이 있을까? 이메일 프로토콜 SMTP : 이메일을 한 서버에서 다른 서버로 보내는 표준 프로토콜이다. 이메일을 가져오는 목적으로 널리 사용되는 ...
가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 (7장) 의 내용 중, 인상적이었던 부분을 발췌 및 요약합니다. 호텔 예약 시스템 데이터 모델 어떤 데이터베이스를 사용해야 할지 결정해보자. 호텔 예약 시스템은 다음 질의를 지원해야 할 것이다. 호텔 상세 정보 확인 지정된 날짜 범위에 사용 가능한 객실 유형 확인 예약 정...