2024/08 17

4장. 분산 메세지 큐 - 1 편

메세지 큐를 사용하면 어떤 이득을 얻을 수 있을까?결합도 완화(decoupling): 컴포넌트 사이의 강한 결합이 사라지므로 각각 독립적이다.규모 확장성 개선: 데이터를 생산하는 생상자(producer)와 메세지를 소비하는 소비자(consumer) 시스템 규모를 트래픽 부하에 맞게 독립적으로 늘릴 수 있다.가용성 개선: 특정 컴포넌트에 장애가 발생해도 다른 컴포넌트는 큐와 계속 사호작용을 이어갈 수 있다.성능 개선: 메세지 큐를 사용하면 비동기 통신이 쉽게 가능하다. 메시지 큐 vs 이벤트 스트리밍 플랫폼데이터 장기보관, 메세지 반복 소비 등 부가 기능을 갖춘 이벤트 스트리밍 플랫폼을 사용한다.아파치 카프카나 펄사는 메세지 큐가 아니라 이벤트 스트리밍 플랫폼이다.메세지 큐(RokcetMQ, RabbitM..

3장. 구글 맵 - 2편

3단계: 상세 설계1. 데이터모델1) 경로 안내 타일도로 데이터는 외부 사업자나 기관이 제공한 것으로, 방대한 양의 도로 및 메타데이터로 구성된다.가공되지 않은 데이터이므로, 경로 안내 알고리즘의 입력으로 활용할 수 없다.경로 안내 타일 처리 서비스라 불리는 오프라인 데이터 가공 파이프라인을 주기적으로 실행하여 경로 안내 타일로 변환한다. 경로 안내 타일 처리 서비스는 가공 결과로 만든 타일을 어디에 저장해야 할까?=> 일반적으로 그래프 데이터는 메모리에 인접 리스트 형태로 보관한다. 데이터 양이 방대하기 때문에 비용 등의 문제로 S3 같은 객체 저장소에 파일을 보관하고 파일을 이용할 경로 안내 서비스에 적극적으로 캐싱하는 방법이 효율적이다.타일을 객체 저장소에 보관할 때는 지오해시 기준으로 분류해 두는..

3장. 쿠버네티스 - 1편

※ 해당 내용은 도커 홈페이지 및 책 내용을 가져왔습니다. ※  3.1 쿠버네티스 이해하기내용 들어가기 전, 쿠버네티스라는 것이 왜 생겼는지 이해가 필요한 것 같다.1) 여정 돌아보기 전통적인 배포 시대: 초기 조직은 애플리케이션을 물리 서버에서 실행했었다. 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당의 문제가 발생했다. 예를 들어 물리 서버 하나에서 여러 애플리케이션을 실행하면, 리소스 전부를 차지하는 애플리케이션 인스턴스가 있을 수 있고, 결과적으로는 다른 애플리케이션의 성능이 저하될 수 있었다. 이에 대한 해결책으로 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행할 수도 있다. 그러나 이는 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않았..

[섹션2] 컬렉션 프레임워크 - ArrayList

배열과 인덱스배열의 특징배열에서 자료를 찾을 때 인덱스(index)를 사용하면 매우 빠르게 자료를 찾을 수 있다.인덱스를 통한 입력, 변경, 조회의 경우 한 번의 계산으로 자료 위치를 찾을 수 있다. 간단 정리 int는 4byte를 차지한다.배열의 시작 참조 + (자료의 크기 * 인덱스 위치)arr[1]: x100 + (4byte * 0)arr[2]: x100 + (4byte * 1) 배열의 검색배열에 들어 있는 데이터를 검색할 때는 하나씩 비교를 해야한다.배열 안에 있는 데이터를 하나씩 확인해야 하기 때문에 배열의 크기가 클 수록 시간이 오래걸린다.배열의 순차 검색은 배열에 들어있는 데이터의 크기 만큼 연산이 필요하다. 빅오(O) 표기법알고리즘의 정확한 실행 시간이 아니라, 데이터 양의 증가에 따른 성..

[섹션1] 제네릭 2편

1. 타입 매개변수 제한 클래스에 명확한 타입을 정해 놓고 작성한다.코드 재사용 X코드 안정성 O다형성 시도코드 재사용성 O: 다형성 처리를 통해 클래스를 하나로 처리할 수 있다.코드 안전성 X: 원하는 타입을 반환하기 위해서는 다운 캐스팅을 해야한다.제네릭 도입과 실패제네릭 타입을 선언하면 자바 컴파일러 입장에서는 T에 어떤 타입이 들어오는지 알 수 없다.=> T는 어떤 타입이든 받을 수 있는 모든 객체의 최종 부모인 Object 타입으로 가정한다.제네릭에서 타입 매개변수를 사용하면 어떤 타입이든 들어올 수 있다.=> 매개변수 타입을 제한 해야한다.타입 매개변수 제한public class AnimalHospitalT extends Animal>코드 재사용성 O코드 안전성 O: 타입 매개변수 상한(ext..

[섹션1] 제네릭 1편

Q. 클래스에서 Integer, boolean, String 등 여러 타입을 한 번에 처리를 어떻게 할까?  1. 여러 타입 처리 방법1) 각 타입을 처리하는 클래스 만들기장점컴파일로 정확하게 타입을 알려준다.(타입 안전성O)단점각 타입마다 클래스를 만들어야 한다.(코드 재사용X)// Integer 담당 클래스IntegerBox integerBox = new IntegerBox();integerBox.set(10);Integer integer = integerBox.get();System.out.println("integer = " + integer);// String 담당 클래스StringBox stringBox = new StringBox();stringBox.set("hello");String st..

3장. 구글 맵 - 1편

1단계: 설계 범위1) 기능 요구사항지원하는 단말은 모바일, 스마트폰이다.사용자 위치 갱신경로 안내 서비스(ETA 서비스 포함)지도 표시2) 비기능 요구사항정확도: 사용자에게 잘못된 경로를 안내하면 안 된다.부드러운 경로 표시: 경로 안내 용도의 지도는 부드럽게 표시되고 갱신되어야 한다.데이터 및 배터리 사용량: 클라이언트는 최소한의 데이터와 배터리를 사용해야한다.가용성 및 확장성3) 기본 개념 및 용어측위 시스템세계는 축을 중심으로 회전하는 구인데, 측위 시스템은 구 표면 상의 위치를 표현하는 체계이다.위경도 기반의 측위 시스템의 경우, 최상단에는 북근 최하단에는 남극이 있다. 위도(Latitude)는 주어진 위치가 얼마나 남쪽/북쪽인지를 나타낸다.경도(Longitude)는 얼마나 동쪽/서쪽인지를 나타..