성능과 최적화
1. 성능과 최적화 1.1 자바 성능: 잘못된 방법 과거에는 메서드를 분리하지 않는 것이 성능에 좋다고 함 -> 현재와는 전혀 다름 자바 코드가 실행되는 속도는 매우 변화무쌍하며 전적으로 코드를 실행하는 하부 JVM에 따라 다름 우수한 성능 목표를 달성하기 위해 필요한 여러 가지 단면을 종합적으로 집중 소개 전체 소프트웨어 수명주기...
1. 성능과 최적화 1.1 자바 성능: 잘못된 방법 과거에는 메서드를 분리하지 않는 것이 성능에 좋다고 함 -> 현재와는 전혀 다름 자바 코드가 실행되는 속도는 매우 변화무쌍하며 전적으로 코드를 실행하는 하부 JVM에 따라 다름 우수한 성능 목표를 달성하기 위해 필요한 여러 가지 단면을 종합적으로 집중 소개 전체 소프트웨어 수명주기...
34. 빠져 있는 장 프레임워크는 아키텍처가 될 수 없다. 계층 기반 패키지 수평 계층형 아키텍처 처음 시작하기에 적합 Controller, Service, Repository 엄청난 복잡합을 겪지 않고도 무언가를 작동시켜 주는 아주 빠른 방법 소프트웨어가 커지고 복잡해지기 시작하면, 더 잘게 모듈화를 해야 할지 고민하게 됨 업무 도메인...
32. 프레임워크는 세부사항이다 프레임워크는 아키텍처가 될 수 없다. 프레임워크 제작자 프레임워크는 당신이 풀어야 할 특별한 관심사를 염두에 두지 않는다. 물론 당신의 문제는 프레임워크가 풀려는 문제와 꽤 많이 겹친다. 혼인 관계의 비대칭성 당신은 프레임워크를 위해 대단히 큰 헌신을 해야 하지만, 프레임워크 제작자는 당신을 위해 아무런 헌신...
31. 웹은 세부사항이다 끝없이 반복하는 추 연산 능력을 중앙에 집중하는 방식과 분산하는 방식 사이에서 끝없이 움직인다. 애플리케이션을 보호하기 위해 업무 규칙을 분리해야 함 요약 GUI는 세부사항. 웹은 GUI. 따라서 웹은 세부사항 참조 클린 아키텍처(Clean Architecture)
30. 데이터베이스는 세부사항이다 아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다. 데이터베이스는 데이터에 접근할 방법을 제공하는 유틸리티일 뿐 관계형 데이터베이스 관계형 데이터베이스는 세부사항임 데이터가 테이블 구조를 가진다는 사실은 오직 아키텍처의 외부 원에 위치한 최하위 수준의 유틸리티 함수만 알아야 함 데이터베이스 시스템은 왜...
29. 클린 임베디드 아키텍처 소프트웨어는 닳지 않지만, 펌웨어와 하드웨어는 낡아 가므로 결국 소프트웨어도 수정해야 한다. 소프트웨어는 닳지 않지만, 펌웨어와 하드웨어에 대한 의존성을 관리하지 않으면 안으로부터 파괴될 수 있다. ROM에 상주하는 코드만이 펌웨어는 아니다. 무엇에 의존하는지, 그리고 하드웨어 발전에 맞춰 수정하기가 얼마나 어려운...
28. 테스트 경계 시스템 컴포넌트인 테스트 아키텍처 관점에서 모든 테스트는 동일 테스트는 태생적으로 의존성 규칙을 따른다. 의존성은 항상 테스트 대상이 되는 코드를 향함 시스템 내부의 어떤 것도 테스트에는 의존하지 않으며, 테스트는 시스템의 컴포넌트를 향해 항상 원의 안쪽으로 의존 테스트는 독립적으로 배포 가능 테스트는 시스템 컴포넌트 ...
27. ‘크고 작은 모든’ 서비스들 서비스 지향 아키텍처와 마이크로서비스 아키텍처는 최근에 큰 인기을 얻고 있는 이유 서비스를 사용하면 상호 결합이 철저하게 분리되는 것처럼 보인다. 사실 일부만 맞는 말 서비스를 사용하면 개발과 배포 독립성을 지원하는 것처럼 보인다. 사실 일부만 맞는 말 서비스 아키텍처 서비스 그 자체로는 아키텍처를...
26. 메인(Main) 컴포넌트 모든 시스템에는 최소한 하나의 컴포넌트가 존재하고, 이 컴포넌트가 나머지 컴포넌트를 생성하고, 조정하며, 관리한다. -> 메인 컴포넌트 궁극적인 세부사항 메인 컴포넌트는 궁극적인 세부사항으로, 가장 낮은 수준의 정책 의존성 주입 프레임워크를 이용해 의존성을 주입하는 일은 바로 이 메인 컴포넌트에서 이뤄져야 ...
25. 계층과 경계 흐름 횡단하기 시스템이 복잡할수록 컴포넌트 구조는 더 많은 흐름으로 분리됨 흐름 분리하기 복잡 결론 아키텍처 경계는 어디에나 존재한다. 경계를 제대로 구현하려면 비용이 많이 든다. 이러한 경계가 무시되었다면 나중에 다시 추가하는 비용이 크다. 목표를 달성하려면 빈틈없이 지켜봐야 한다. 참조 클린 아키텍처(C...