일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 커링
- 코딩 테스트
- @EnableScheduling
- 전화번호 목록
- 고차원 함수
- 검색 기능 확장
- 가장 큰 수
- @configuration
- 루씬 인 액션
- 프로그래머스
- 롬복 어노테이션
- 영속 자료구조
- 기능개발
- 완주하지 못한 선수
- kubenetes
- @Getter
- 다리를 지나는 트럭
- 스택/큐
- H-index
- @Data
- 알고리즘
- Java
- 크론 표현식
- 정렬
- 스프링 스케쥴러
- @Setter
- 쿠버네티스
- 모던 자바 인 액션
- 해시
- K번째수
- Today
- Total
목록클린 아키텍처 (15)
Today I Learned
31장. 웹은 세부사항이다 끝없이 반복하는 추 IT 역사는 모든 연산 능력을 중앙 서버에 두는 방식과 단말에 두는 방식을 사이에서 반복되는 진동을 겪어왔다. 웹도 이러한 진동 중 하나에 불과하다. (서버 팜 - 브라우저 애플릿 - Ajax/자바스크립트 - Node.js) 이 진동은 그저 핵심 업무 규칙의 중심에서 밀어내고 싶은 단기적인 문제일 뿐이다. 요약 GUI는 세부사항이다. 웹은 GUI다. 따라서 웹은 세부사항이다. 업무 로직은 다수의 유스케이스로 구성되며, 각 유스케이스는 사용자를 대신해서 일부 함수를 수행한다 각 유스케이스는 입력 데이터, 수행할 처리 과정, 출력 데이터로 이뤄진다. 완전한 입력 데이터와 그에 따른 출력 데이터는 데이터 구조로 만들어서 유스케이스를 실행하는 처리 과정의 입력 값과..
30장. 데이터베이스는 세부사항이다 아키텍처 관점에서 데이터베이스는 엔티티가 아니다. 데이터베이스는 일개 소프트웨어일 뿐이며, 데이터에 접근할 방법을 제공하는 유틸리티다. 이러한 유틸리티는 저수준의 세부사항일 뿐이라서 아키텍처와 관련이 없으며, 저수준의 메커니즘이 시스템 아키텍처를 오염시켜서는 안된다. 관계형 데이터베이스 관계형 테이블은 특정한 형식의 데이터에 접근하는 경우에는 편리하지만, 데이터를 테이블에 행 단위로 배치한다는 자체는 아키텍처적으로 볼 때 전혀 중요하지 않다. 많은 데이터 접근 프레임워크가 테이블과 행이 객체 형태로 시스템 여기 저기에서 돌아다니게 허용하지만, 아키텍처 적으로 잘못된 설계이다. 데이터베이스 시스템은 왜 이렇게 널리 사용되는가? 그동안 데이터 저장소의 중심에는 디스크가 있..
26장. 메인(Main) 컴포넌트 모든 시스템에는 최소 하나의 컴포넌트가 존재한다. 이 컴포넌트가 메인컴포넌트가 되어 나머지 컴포넌트를 생성, 조정 관리한다. 궁극적인 세부사항 메인컴포넌트는 궁극적인 세부사항으로 가장 낮은 수준의 정책이다. 시스템의 초기 진입점이며, 운영체제를 제외한 어떤 것도 메인에 의존하지 않는다. 메인컴포넌트에서 의존성 주입 프레임워크를 이용해 의존성을 주입한다. 메인은 클린 아키텍처에서 가장 바깥 원에 위치하는 저수준의 모듈이다. 고수준의 시스템을 위한 모든 것을 로드한 후, 제어권을 고수준의 시스템에게 넘긴다. 27장. '크고 작은 모든' 서비스들 서비스 아키텍처? 시스템의 아키텍처는 의존성 규칙을 준수하며 고수준의 정책을 저수준의 세부사항으로부터 분리하는 경계에 의해 정의된다..
24장. 부분적 경계 완전한 아키텍처 경계를 만드는데는 비용이 많이 든다. 또한 선행적으로 설계하기에는 YAGIN(You Aren't Going to Need It) 원칙을 위배한다. 그럼에도 불구하고 미리 만들어두길 원한다면 부분적 경계를 구현해 볼 수 있다. 마지막 단계를 건너뛰기 부분적 경계를 생성하는 방법 하나는 독립적으로 컴파일하고 배포할 수 있는 컴포넌트를 만들기 위한 작업은 모두 수행한 후, 단일 컴포넌트에 그대로 모아두는 것이다. 완벽한 경게를 만드 떄와 동일한 코드량과 사전 설계가 필요하지만, 다수의 컴포넌트를 관리하는 부담이 줄어든다. 일차원 경계 완병학 형태의 아키텍처 경계에서는 쌍방향 Boundary 인터페이스를 사용하지만, 비용이 많이 든다. 전략패턴을 사용하면 추후 완벽한 형태의..