본문 바로가기

스터디64

오브젝트 02 - 객체지향 프로그래밍 오브젝트 02 - 객체지향 프로그래밍 2.1 영화 예매 시스템 - 영화, 상영, 할인 정책, 할인 조건이 있는 영화 예매 시스템이 존재한다. 2.2 객체지향 프로그래밍을 향해 2.2.1 협력, 객체, 클래스 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 아래의 두 가지에 집중해야 한다. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것이다. 따라서 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해.. 2024. 2. 6.
오브젝트 01 - 객체, 설계 오브젝트 01 - 객체, 설계 1.1 티켓 판매 애플리케이션 구현하기 조건 초대장을 가진 사람은 티켓으로 교환 후 입장 가능 일반 입장객은 티켓을 구매 후 입장 가능 간단하고 예상대로 동작하지만 몇가지 문제점이 있는 프로그래밍 public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller){ this .ticketSeller = ticketSeller; } public void enter(Audience audience) { if (audience.getBag().hasinvitation()) { Ticket ticket = ticketSeller.getTicketOffice().getTic.. 2024. 2. 6.
[데이터 중심 애플리케이션 설계] 12. 데이터 시스템의 미래 [데이터 중심 애플리케이션 설계] 12. 데이터 시스템의 미래 데이터 시스템은 미래에 어떻게 되어야 할까? 신뢰할 수 있고 확장 가능하며 유지보수하기 쉽게 만드는 데이터 시스템의 미래를 고찰해보자. 1. 데이터 통합 1.1 파생 데이터에 특화된 도구의 결합 1.1.1 데이터플로에 대한 추론 같은 데이터의 사본을 여러 저장소 시스템에 유지해야 할 때 입력과 출력을 분명히 해야한다. 어디서 데이터를 처음으로 기록하는지, 어떤 표현형이 어떤 원본에서 파생되는지, 데이터를 모두 올바른 장소로 올바른 형식으로 어떻게 넣는지 등에 대해 충분히 고려해야 한다. 파생 데이터 시스템은 이벤트 로그를 기반으로 갱신하면 결정적이고 멱등성을 지녀 결함에서 복구하기가 상당히 쉬워진다. 1.1.2 파생 데이터 대 분산 트랜잭션 .. 2023. 2. 15.
[데이터 중심 애플리케이션 설계] 11. 스트림 처리 [데이터 중심 애플리케이션 설계] 11. 스트림 처리 1. 이벤트 스트림 전송 이벤트 특정 시점에 일어난 사건에 대한 세부 사항을 포함 일반적으로 일기준 시계를 따르는 타임스탬프 포함 이벤트의 부호화, 저장, 전송 텍스트 문자열이나 JSON 또는 이진 형태 등으로 부호화 가능 파일 및 관계형 테이블에 삽입 및 문서 데이터베이스로 기록하거나 저장 가능 다른 노드에서 처리하게끔 네트워트를 통해 전송 가능 생산자와 소비자 생산자(producer = publisher) : 이벤트를 만든다. 소비자(consumer = subscriber) : 이벤트를 처리한다. 스트림 시스템에서는 토픽(topic)이나 스트림으로 관련 이벤트를 묶는다. 1.1 메시징 시스템 메시징 시스템은 새로운 이벤트에 대해 소비자에게 알려준다.. 2023. 2. 11.
[데이터 중심 애플리케이션 설계] 10. 일괄 처리 [데이터 중심 애플리케이션 설계] 10. 일괄 처리 1. 시스템의 세가지 종류 1.1 서비스(온라인 시스템) 클라이언트의 요청이나 지시를 기다렸다가 요청이 들어오면 가능한 빨리 처리 후 응답을 되돌려보낸다. 응답시간과 가용성은 서비스 성능의 중요한 지표다. 1.2 일괄 처리 시스템(오프라인 시스템) 매우 큰 입력 데이터를 받아서 데이터를 처리하는 작업을 수행하고, 결과 데이터를 생산한다. 일괄 처리 작업은 수 분에서 수 일이 걸리므로 사용자가 응답을 기다리지 않고, 반복적으로 일정한 시간에 수행한다. 처리량은 중요한 성능 지표다. 1.3 스트림 처리(준실시간 시스템) 온라인과 오프라인 사이 어딘가에 있기 때문에 준실시간 처리이다. 일괄 처리 시스템처럼 요청에 대해 응답하지 않으며, 입력 데이터로부터 출력.. 2023. 2. 1.
[데이터 중심 애플리케이션 설계] 09. 일관성과 합의 [데이터 중심 애플리케이션 설계] 09. 일관성과 합의 1. 일관성 보장 동시에 데이터베이스 두 대를 본다면, 복제 방법에 상관 없이 서로 다른 데이터를 볼 가능성이 크다. 약한보장 복제 데이터 베이스는 대부분 최소한 최종적 일관성을 제공하나, 언제 수렴될지 모른다. 버그는 시스템 결함이 있거나 동시성이 높을 때만 명확하기 때문에 테스트로 발견하기 어렵다. 강한보장 데이터 시스템이 선택적으로 제공 올바르게 사용하기 쉬우나 시스템 성능이 나쁘거나 내결함성이 약할수도 있다. 2. 선형성 공통적으로 사용되는 가장 강한 일관성 모델 중 하나 시스템에 복사본이 하나만 있고 그 데이터를 대상으로 수행하는 모든 연산은 원자적인 것처럼 보이게 하는 것 원자적 일관성 (atomic consistency), 강한 일관성(.. 2023. 1. 18.
728x90
반응형