전체 글(91)
-
[Charpter 09] 아키텍처 스타일 - 기초
아키텍처 스타일 진흙 잡탕 실제 내부 구조라 할 만한 것은 하나도 없는, 데이터베이스를 직접 호출하는 이벤트 핸들러를 가진 단순한 스크립팅 애플리케이션이다. 유니터리 아키텍처 단 1대의 컴퓨터에서 소프트웨어가 실행되었던 방식 클라이언트/서버(2티어) 프론트엔드와 백엔드로 기술적으로 기능을 분리한 2티어이다. 3티어 데이터베이스 서버를 사용하는 데이터베이스 티어, 애플리케이션 서버가 관리하는 애플리케이션 티어, 프론트엔드 티어로 분리한 것이다. 모놀리식 대 분산 아키텍처 분산 아키텍처의 8가지 오류를 살펴보자 오류 1) 네트워크는 믿을 수 있다. 서비스를 오가는, 서비스간에 이동하는 것에 있어 네트워크 의존도가 높아 시스템의 신뢰도가 잠재적으로 떨어질 가능성이 있다. 해결책 타임아웃 장치 마련 서비스 사이..
2023.09.03 -
[Charpter 08] 컴포넌트 기반 사고
컴포넌트 모듈을 물리적으로 패키징 한 것 자바 jar, 닷넷 dll 등 대부분의 언어는 패키징을 지원한다. 컴포넌트 범위 컴포넌트 개념을 다양한 팩터에 세분화하는 것이 유용하다고 봄. 가장 단순한 컴포넌트는 클래스(또는 비객체 지향 언어의 함수)보다 한 단계 높은 수준의 모듈로 코드를 래핑 하는 것이고, 이를 라이브러리라고 한다. 라이브러리 -> 대개 호출부 코드와 동일한 메모리 주소에서 실행되며, 해당 언어의 함수 호출 메커니즘을 이용하여 통신한다. 컴포넌트는 아키텍처에서 서브시스템이나 레이어 형태로도 나타나며, 많은 이벤트 프로세서를 위한 배포 가능한 작업 단위이다. 아키텍처의 근본적인 모듈성을 구성하는 요소로서 아키텍트에게 아주 중요한 고려사항으로, 아키텍처 컴포넌트의 최상위 분할은 가장 중요한 항..
2023.09.03 -
[Charpter 07] 아키텍처 특성 범
커플링과 커네이선스 구심 /원심 커플링 같은 코드 레벨의 커플링 메트릭은 아키텍처 분석용으로 너무 세분도가 높은 편이다. 커네이선스 두 컴포넌트 중 한쪽이 변경될 경우 다른 쪽도 변경해야 전체 시스템의 정합성이 맞는다면 이들은 커네이선스를 갖고 있는 것이다. 정적 코드 분석으로 발견할 수 있는 정적 커네이선스과 런타임 동작에 관한 동적 커네이선스로 분류된다. 예를 들어, 마이크로서비스 아키텍처의 두 서비스가 address 라는 동일한 클래스를 공유한다면 두 서비스는 서로 정적인 커네이선스를 가진다. 동적 커네이선스는 동기. 비동기로 분류되는 데 분산 서비스끼리 동기 호출을 하면 호출부는 피호출부의 응답을 기다려야 하는 반면, 이벤트 기반 아키텍처의 비동기 호출은 파이어 앤드 포켓 방식이므로, 운영 아키텍..
2023.08.27 -
[Chapter 06] 아키텍처 특성의 측정 및 거버넌스
아키텍처 특성 측정 아키텍처 특성을 정의할 때는 흔히 다음과 같은 문제들이 발생한다. 물리학이 아니다 : 아키텍처 특성은 대부분 의미가 모호하다. 정의가 너무 다양하다 : 부서마다 정의를 통일하기 전까지는 원활한 소통이 어렵다. 너무 복합적이다 : 바람직한 아키텍처 특성은 대부분 더 작은 다른 여러 특성들로 구성된다. 이 세가지 문제들은 아키텍처 특성을 객관적으로 정의하면 모두 해결된다. 운영적 측정 아키텍처 특성은 성능, 확장성처럼 비교적 정확하게 측정할 수 있는 것도 많지만, 팀 목표에 따라 그에 따른 해석은 미묘하게 갈릴 때가 많다. 예를 들어 특정 요청에 대한 평균 응답 시간을 측정할 경우, 어떤 경계 조건 때문에 1%의 요청이 다른 요청보다 처리 시간이 10배 오래 걸리면 어떻게 해야 할까? 사..
2023.08.27 -
[Chapter 05]아키텍처 특성 식별
도메인 관심사에서 아키텍처 특성 도출 아키텍트는 도메인의 핵심 목표와 현재 상황을 고려해서 도메인 관심사를 ‘~성'으로 해석한 후, 그에 따라 정확하고 합리적인 아키텍처 결정을 내려야 한다. 최종 목록을 가능한 한 짧게 하라는 것 인데, 아키텍처 특성의 개수에 연연하지 말고 가급적 설계를 단순화하는게 좋다. 대부분의 아키텍처 특성은 핵심 도메인 이해관계자들의 의견을 듣고 도메인 관점에서 무엇이 중요한지 의견을 교환하면서 정리된다. 여기서 문제는 아키텍트와 도메인 이해관계자들이 서로 다른 언어로 말을 한다는 것이다. 아키텍트는 확장성, 상호운용성, 내고장성, 학습성, 가용성을 운운하는데, 도메인 이해관계자는 인수 병합, 고객 만족, 출시 시점, 경쟁 우위를 논하는 식이다. 아키텍트는 성능 외에도 가용성, ..
2023.08.27 -
[Chapter 04] 아키텍처 특성 정의
소프트웨어로 문제를 해결하려면 어떻게 해야 할까? 시스템 요구사항을 취합하고 그것을 구현하는 데 필요한 다양한 기술을 소프트웨어 개발 프로세스에 따라 정리해야 함. 아키텍처 특성 정의 개발팀과 함께 도메인 또는 비즈니스 요구사항을 정의할 수 있지만, 주로 소프트웨어로 처리할 일 중 도메인 기능과 직접적인 관련이 없는 모든 것들, 즉 아키텍처 특성을 정의, 발견, 분석하는 일을 수행해야 함. 비도메인(nondomain) 설계 고려 사항을 명시함 설계의 구조적 측면에 영향을 미침 애플리케이션 성공에 절대적으로 중요함. 아키텍처 특성(일부) 목록 아키텍처 특성은 모듈성 같은 저수준 코드의 특성부터 확장성, 탄력성 같은 복잡한 운영 문제까지 소프트웨어 시스템의 넓은 범위에 고루 존재함. 운영 아키텍처 특성 가용..
2023.08.20