읽은 책 57

Chapter 12. 열거형

열거형을 볼 때마다 어떻게 만들어진 클래스인지 궁금해서 정리를 해보았다.해당 궁금증을 이해하기 위해서는 '2.4 열거형의 이해' 를 바로 읽으면 된다. 2. 열거형(Enum)2.1. 열거형이란?열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. ※ 열거형이 없을 때, 작성한 코드public class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; static final int TWO = 0; static final int THREE = 1; ..

5장. 지속적 통합과 배포 자동화, 젠킨스

컨테이너로 구동하는 애플리케이션을 어떻게 배포할 수 있을까?깃허브 등의 저장소에 저장해 둔 애플리케이션 소스 코드를 내려받아 도커 컨테이너 이미지로 빌드한다.빌드한 컨테이너 이미지를 쿠버네티스에서 사용할 수 있도록 레지스트리에 등록한다.레지스트리에 등록된 이미지를 기반으로 쿠버네티스 오브젝트를 생성한다.생성한 오브젝트를 외부에서 접속할 수 있도록 서비스 형태로 노출한다. 5.1 컨테이너 인프라 환경에서 CI/CD일반적으로 지속적 통합(CI, Continuous Integration)은 코드를 커밋하고 빌드했을 때 정상적으로 작동하는지 반복적으로 검증해 애플리케이션의 신뢰성을 높이는 작업이다. 지속적 배포(CD, Continuout Deploymeny) 는 CI 과정에서 생성된 실뢰할 수 있는 애플리케이션..

4장. 쿠버네티스를 이루는 컨테이너 도우미, 도커

4.1 도커를 알아야 하는 이유쿠버네티스를 이루는 기본 오브젝트가 파드이고, 파드는 컨테이너로 이루어져있으며, 컨테이너를 만들고 관리하는 도구가 도커이다.쿠버네티스를 이루고 있는 기술 자체는 컨테이너를 벗어날 수 없다.4.1.1 파드, 컨테이너, 도커, 쿠버네티스 1) 파드파드들은 워커 노드라는 노드 단위로 관리하며, 워커 노드와 마스터 노드가 모여 쿠버네티스 클러스터가 된다.파드는 1개 이상의 컨테이너로 이루어져 있다.파드는 쿠버네티스로부터 IP를 받아서 컨테이너가 외부와 통신할 수 있도록 경로를 제공컨테이너들이 정상적으로 작동하는지 확인하고 네트워크나 저장 공간을 서로 공유하게 한다.즉, 파드가 이러한 환경을 만들기 때문에 컨테이너들은 하나의 호스트(host)에 존재하는 것처럼 동작한다.2) 컨테이너..

3장. 컨테이너를 다루는 표준 아키텍처, 쿠버네티스

컨테이너 인프라 환경 이란 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 말한다. 컨테이너는 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스이다.3.1 쿠버네티스 이해하기실제로 쿠버네티스는 컨테이너 오케스트레이션을 위한 솔루션이다. 오케스트레이션(Orchestration)이란 복잡한 단계를 관리하고 요소들의 유기적인 관계를 미리 정의해 손쉽게 사용하도록 서비스를 제공하는 것을 의미한다. 다수의 컴테이너를 유기적으로 연결, 실행, 종료할 뿐만 아니라 상태를 추적하고 보존하는 등 컨테이너를 안정적으로 사용할 수 있게 만들어 주는 것이다. 컨테이너 오케스트레이션을 제공하는 솔루션들이 있다.도커 스웜메소스노매드쿠버네티스3.1.2 쿠버네티스 구성방법퍼블릭 클라우..

13장. 증권 거래소

거래소의 기본 기능은 구매자와 판매자가 효율적으로 연결될 수 있도록 돕는 것이다. 1단계: 설계 범위1. 비기능 요구사항가용성: 최소 99.99%, 거래소의 가용성은 매우 중요한 문제. 단 몇 초의 장애로도 평판이 손상될 수 있다.결함 내성: 프로덕션 장애의 파급을 줄이려면 결함 내성과 빠른 복구 메커니즘이 필요하다.지연 시간: 왕복 지연 시간은 밀리초 수준이어야 하며, 특히 p99 지연 시간이 중요하다. 왕복 지연 시간은 주문이 거래소에 들어오는 순간부터 주문의 체결 사신이 반환되는 시점까지다.보안: 거래소는 계정 관리 시스템을 갖추어야 한다. 법률 및 규정 준수를 위해 거래소는 새 계좌 개설 저에 사용자 신원 확인을 위한 KYC 확인을 수행한다.2. 개략적 규모 추정100가지 주식하루 10억 건의 주..

12장. 전자 지갑

결제 플랫폼은 일반적으로 고객에게 전자 지갑 서비스를 제공하여 고객으로 하여금 지갑에 돈을 넣어 두고 필요할 때 사용할 수 있도록 한다. 예를 들어, 은행 카드에서 전자 지갑에 돈을 이체해 두면 전자상거래 사이트에서 제품을 구매할 때 그 지갑의 돈을 사용하여 결제하는 옵션을 선택할 수 있다. 1단계: 설계 범위1. 기능 요구사항전자 지급 간 이체1,000,000TPS99.99%의 안전성트랜잭션재현성2. 개략적인 규모 추정TPS를 거론한다는 것은 배후에 트랜잭션 기반 데이터베이스를 사용한다는 뜻이다.오늘날 데이터센터 노드에 실행되는 관계형 데이터베이스는 초당 수천 건의 트랜잭션을 지원할 수 있다.이체 명령을 실행하려면 두 번의 연산이 필요하기 때문에 1백만 건의 TPS를 처리하기 위해서는 2백만 TPS를 ..

9장. S3와 유사한 객체 저장소

S3와 유사한 객체 저장소 서비스를 설계한다.S3는 AWS가 제공하는 서비스로 RESTful API 기반 인터페이스로 이용 가능한 객체 저장소이다. 1. 저장소 시스템 1011) 블록 저장소HDD(Hard Disk Drive)나 SSD(Solid State Drive)처럼 서버에 물리적으로 연결되는 형태의 드라이브는 블록 저장소의 가장 흔한 형태다.블록 저장소는 원시 블록(raw block)을 서버에 볼륨(volume) 형태로 제공한다.서버는 원시 블록을 포맷한 다음 파일 시스템으로 이용하거나 애플리케이션에 블록 제어권을 넘겨버릴 수도 있다.데이터베이스나 가상 머신 엔진 같은 애플리케이션은 원시 블록을 직접 제어하여 최대한의 성능을 끌어낸다.서버에 물리적으로 직접 연결되는 저장소에 국한되지 않고, 고속 ..

11장. 결제 시스템

결제 시스템이란?위키백과에 따르면 "금전적 가치의 이전을 통해 금융 거래를 정산하는데 사용되는 모든 시스템"이다.1단계: 설계 범위1. 기능 요구사항대금 수신(pay-in) 흐름: 결제 시스템이 판매자를 대신하여 고객으로부터 대금을 수령한다.대금 정산(pay-out) 흐름: 결제 시스템이 전 세계의 판매자에게 제품 판매 대금을 송금한다.2. 비기능 요구사항신뢰성 및 내결함성: 결제 실패는 신중하게 처리해야 한다.내부 서비스와 외부서비스 간의 조정 프로세스: 시스템 간의 결제 정보가 일치하는지 비동기적으로 확인한다.3. 개략적인 규모 추정하루에 100만건의 트랜잭션을 처리해야 한다.이는 초당 10건의 트랙잭션(TPS)이다.일반적인 데이터베이스로 별 문제 없이 처리 가능한 양이다.2단계: 개략적 설계안결제 ..

10장. 실시간 게임 순위표

순위표란? 특정 토너먼트나 경연에서 누가 선두를 달리고 있는지 보여주기 위해 게임등에서 흔히 사용하는 장치다.사용자는 과제나 도전을 완료하면 포인트를 받으며, 가장 많은 포인트를 획득한 사람이 순위표의 맨 위에 자리한다.1단계: 설계 범위1) 기능 요구사항순위표에 상위 10명의 플레이어를 표시한다.특정 사용자의 순위를 표시한다.어떤 사용자보다 4순위 위와 아래에 있는 사용자를 표시한다.2) 비기능 요구사항점수 업데이트는 실시간으로 순위표에 반영한다.일반적인 확장성, 가용성 및 안정성 요구사항3) 개략적 규모 추정DAU가 50만 명인 게임의 경우 초당 평균 50명의 사용자가 게임을 플레이한다.사용량이 균등한 경우는 없기 때문에 초당 250명의 사용자를 감당할 수 있어야 한다.QPS는 50 * 10 = 50..