북리뷰(40)
-
03. 타입과 추상화
추상화의 의도는 목적에 집중 - 지하철 노선토 핵심은 정확한 지형 정보가 아닌 갈아타는 위치 알아야 하는 사실만 정확하게 표현, 몰라도 되는 정보는 무시 추상화의 목적 : 불필요한 부분을 무시해서 현실에 존재하는 복잡성을 극복 # 추상화 어떤 양상, 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춰서 복잡도를 극복하는 방법 ## 추상화 차원 - 구체적인 사물들 간 공통점을 취하고, 차이점은 버리는 일반화를 통해 단순화 - 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거하여 단순화 # 객체 분류의 관점 - 심블 : 개념을 가리키는 간략한 명칭 : 트럼프 - 내연 : 개념의 완전한 정의, 객체가 개념에 속하는지 여부를 확인 가능 : 몸이 납작한 네모 모퉁이 -..
2023.05.29 -
02. 이상한 나라의 객체
객체지향 페러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것 - 행동에 따라 상태가 변함 - 상태를 결정하는 것은 행동, 행동의 결과를 결정하는 것은 상태 # 갹체의 특징 - 상태를 가지며 상태는 변경 가능함 - 상태를 변경시키는 것은 행동임 --행동의 결과는 상태 의존적, 상태를 이용해 서술 가능 --행동의 순서가 결과에 영향을 미침 - 객체는 어떤 상태에 있더라도 유일하게 식별 가능 ## 상태(state, property) 상태를 이용하면 현재를 기반으로 객체의 행동 방식을 이해할 수 있음 근본적으로 세상의 복잡성을 완화, 인지 과부하를 줄일 수 있음 - 모든 객체의 상태는 단순한 값과 객체의 조합으로 표현 가능 - 링크 : 객체와 객체 사이의 의미 있..
2023.05.29 -
01. 협력하는 객체들의 공동체
객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 유사하게 모방해 SW내부로 옮겨오는 작업이라고 많이 알고있음. 실세계의 모방이라는 개념은 객체지향의 철학적인 개념을 설명하는데 적합하나, 실제 분석 및 설계를 설명하기에는 적합하지 않음. 실제로 객체와 대응되는 실세계 사물을 발견할 확률이 높지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것 객체지향에서 가장 중요한 개념 : 역할, 책임, 협력 # 요청과 응답으로 구성된 협력 대부분 사람들은 큰 문제를 혼자서 해결하기 보다는 다른 사람들의 도움을 받아 해결하는 것을 선호 사람들은 스스로 해결하지 못하는 문제와 마주치면 문제 해결에 필요한 지식을 알고 있거나 서비스를 제공할 수 있는 사람에게 도움을 요청 하나의 문제..
2023.05.28 -
5장 : 마이크로서비스 설계
MSA에서 가장 중요한 관심사 : 기능적 응집성을 높이는 것, 타 서비스 간 의존도 낮추는 것 # 마이크로 서비스를 도출하는 방법 ## 비즈니스 능력에 근거한 도출 업무 기능 분해 : 업무 흐름에 따라 업무를 최상위에서 하위까지 대,중,소의 크기로 분리하고 수행하는 일을 체계적으로 정렬 전체적인 비즈니스를 이해할 때는 유용하나, 서비스 간 관계 파악 및 구체기능과 연관된 서비스 관리할 독립적인 데이터 식별을 어려움 ## DDD의 바운디드 컨텍스트 기반 도출 DDD에서는 하나의 큰 도메인을 중요도에 따라 도메인을 나누고 각 도메일을 하나씩 해결 ### 서브 도메인 비즈니스 도메인을 논리적으로 구분/분리되는 여러 하위 도메인 - 핵심 서브도메인 : 높은 우선순위 영역, 전략적으로 가장 큰 투자가 필요한 영역..
2023.05.22 -
3장 : 마이크로서비스 어플리케이션 아키텍처
# DB 중심 아키텍처 문제점 DB 중심 아키텍처 : 특정 RDB에 의존한 데이터 모델링을 수행한 다음 이 물리 테이블 모델을 중심에 두고 APP을 구현하기 위한 사고를 하는 방식 - 간단한 처리 로직은 편하나, 업무가 복잡해지면 점점 복잡성을 제어할 수 없음 - DB에 의존하게 되어 스케일 아웃 성능이 떨어짐 # 레이어드 아키텍처 프레젠테이션, 비즈니스로직, 데이터 엑세스 3계층으로 구분하는 것이 일반적 ## 레이어드 아키텍처 규칙 - 상위 계층이 하위 계층을 호출하는 단방향성 유지 - 바로 밑의 근접 계층만 활용 - 상위 계층이 하위 계층에게 영향 받지 않게 구성 - 하위 계층은 자신을 사용하는 상위 계층을 알지 못하게 구성 - 계층 간의 호출은 인터페이스를 통해 호출(의존성 분리) 현대 APP은 다..
2023.05.19 -
2장 : MSA의 이해
## 리액티브 선언 응답성 : 사용자에게 신뢰성 있는 응답을 빠르고 적절하게 제공 탄력성 : 장애가 발생하거나 부분적으로 고장나더라도 시스템 전체가 고장나지 않고 빠르게 복구 유연성 : 시스템의 사용량에 변화가 있더라도 균일한 응답성을 제공, 시스템 사용량에 비례해서 자원을 늘리거나 줄이는 능력 메시지 기반 : 비동기 메시지를 전달을 통해 위치 투명성, 느슨한 결합, 논블로킹 통신을 지향 4가지 요소는 상호 보완적, 급변하는 상황에 적응할 수 있는 시스템을 요구하는 것 아키텍처 유연성 : 시스템을 구성하는 구성요소 간의 관계들이 느슨하게 맺어져 있어 언제든지 대체되거나 추가 확장될 수 있는 특성 ## 강 결합에서 느슨한 결합으로의 변화 특정 벤더 중심 아키텍처는 검증된 유명 제품군을 통해 품질이 보장되나..
2023.05.18