Architecture 썸네일형 리스트형 Architecture Patterns with Python(4장) 플라스크 API와 서비스 계층 앞서 만든 도메인 서비스와 저장소 인터페이스를 엮어 깔끔한 아키텍처로 리팩토링 해본다. 다음과 같은 계획에 따른다. 1. 플라스크를 사용해 allocate 도메인 서비스(1장) 앞에 API 엔드 포인트를 위치한다. 데이터 베이스 세션과 저장소를 연결한다. 그 후 End to End 테스트와 SQL 을 활용한 테스트를 한다. 2. 서비스 계층을 리팩토링해서 플라스크와 도메인 모델 사이에 유스 케이스를 담는 추상화 역할을 할 수 있게 한다. 3. 서비스 계층의 기능을 여러 유형의 파라미터로 실험한다. 데이트베이스 한쪽 끝부터 API 사용하는 반대편 끝까지에 대한 테스트를 엔드투엔드 테스트 라고 한다. import pytest import uuid import requests i.. 더보기 Architecture Patterns with Python(3장) 결합과 추상화 앞서 본 저장소 패턴은 저장소에 대한 추상화다. B 컴포넌트가 깨지는 게 두려워서 A 컴포넌트를 변경할 수 없는 경우를 이 두 컴포넌트가 서로 결합되어 있다고 한다. 지역적인 결합은 좋다. 코드가 서로 함께 동작하고, 한 컴포넌트가 다른 컴포넌트를 지원하며 시계 나사처럼 서로 맞물려 돌아간다. 그러나 전역적인 결합은 성가신 존재일 수 있다. 코드를 변경하는 데 드는 비용을 증가시키며, 결합이 커지면 아예 코드를 변경할 수 없는 지경에 이르기도 한다. 추상화를 통해 세부 사항을 감추면 시스템 내의 결합 정도를 줄일 수 있다. 추상화는 보통 단순화 하는 것이므로, 어떠한 시스템 사이에 추상화가 들어감으로써 의존하는 의존성의 종류가 줄어든다. 예를 들어, 원본(source)과 사본(destina.. 더보기 Architecture Patterns with Python(2장) 저장소 패턴 저장소 패턴은 데이터 저장소를 더 간단히 추상화한 것으로 이 패턴을 사용하면 모델 계층과 데이터 계층을 분리할 수 있다. 애자일 방식으로 작업할 때는 최소 기능 제품(MVP:Minimum Viable Product) 을 만드는 것이 우선이다. 1장에서 만든 도메인 모델을 API 로 만든다고 하면, API 가 MVP 가 된다. 장고의 MVC(모델-뷰-컨트롤러) 구조처럼 표현 계층 -> 비즈니스 로직 -> 데이터베이스 계층으로 구성된 계층 아키텍처가 존재한다. 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 이 계층 아키텍처의 목표다. 하지만 도메인 모델에는 그 어떤 의존성도 없어야 한다. 즉, 하부 구조와 관련된 문제가 도메인 모델에 지속적으로 영향을 끼치면 안된다. 대신 모델을 마.. 더보기 Architecture Patterns with Python(1장) 도메인 모델링 대부분 시스템을 설계할 때, 데이터베이스 스키마를 그리기 시작하고 그 다음 객체 모델을 생각한다. 여기서부터 모든 것이 잘못되기 시작한다. 먼저 행동하고 저장에 대한 요구 사항은 행동에 맞춰 정해져야 한다. 고객들은 데이터 모델에 대해 신경쓰지 않는다. 시스템이 어떤 일을 하는지만 신경 쓴다. 이 책에서는 4가지 핵심 설계 패턴을 보여준다. 저장소 패턴은 영속적인 저장소에 대한 추상화이다. 서비스 계층 패턴은 usecase의 시작과 끝을 명확하게 정의하기 위한 패턴이다. 작업 단위 패턴은 원자적 연산을 제공한다. 애그리게이트 패턴은 데이터 정합성을 강화하기 위한 패턴이다. 챕터 1에서는 비즈니스 프로세스를 코드로 모델링하는 방법을 배운다. 이 때 TDD와 호환이 잘 되는 방식을 살펴본다. .. 더보기 이전 1 2 다음