일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 운동
- FIT XR
- English
- 스탭퍼
- 영어공부
- 링피트
- 영어원서읽기
- 만화도
- 리얼 클래스
- 화상영어
- 쓰릴오브파이트
- 사이드
- Writing
- 3줄정리
- 뭐든
- 프로젝트
- 월간
- leetcode
- 10분
- 미드시청
- 읽기
- Problem Solving
- 개발자
- realclass
- 매일
- Daily Challenge
- 괜찮음
- 파비최
- 30분
- 잡생각
- Today
- Total
파비의 매일매일 공부기록
깔끔한 파이썬 탄탄한 백엔드 - #10 API 아키텍처 본문
9장은 일단 스킵하고 10장을 먼저 포스팅하는 이유는
9장의 경우 AWS 관련 내용이라 AWS S3가 소개되는 11장과 같이 포스팅하려고 한다.
어쨌든 이번에는 항상 고민되는 주제 중에 하나인
API의 코드 전체 구조(코드의 아키텍처)에 대해 알아본다.
코드의 특별한 구조 없이 한 파일에 모든 코드를 구현하게 되면 유지보수가 어려워진다.
코드의 구조를 더 체계적, 효율적으로 구현하는 것을 코드의 아키텍처라고 한다.
확장성 : 확장성을 고려하지 않고 구현할 경우 시스템의 규모가 커질수록 문제의 여지가 많다.
재사용성 : 코드의 양을 적게 만들 수 있고 개발 속도도 높아지며 견고한 코드를 구현하기 쉽다. 함수나 클래스를 재사용하는 수준을 넘어서 구조적인 재사용성을 의미한다.
보수 유지 가능성 : 구조적으로 로직이 잘 정리가 되고 나뉘어 있어야 한다. 스파게티 코드를 피할 것. 함수나 클래스 등을 사용하여 추상화 및 독립적인 로직을 분리하여 필요한 곳에 적절하게 사용되도록 코드를 구현.
가독성 : 어려운 로직일수록 더욱 가독성 높게 구현해야 함.
테스트 가능성 : 단위 테스트하기 쉬운 코드로 구현할 것. 추상화가 잘 구현되어 있고 담당하는 역할 이 잘 나뉘어 있는 구조가 테스트하기 좋은 구조.
레이어드 패턴 : 백엔드 API 코드에 가장 널리 적용되는 패턴 중 하나. 멀티-티어 아키텍처 패턴이라고도 하며 코드를 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴. 각 모듈이 의존도에 따라 서로 연결되어 전체 시스템을 구현하는 구조. 표현, 비즈니스, 영속 레이어로 구성
표현 계층 : 사용자 혹은 클라이언트 시스템과 직접적으로 연결되는 부분.
비즈니스 계층 : 비즈니스 로직을 구현하는 부분. 대부분의 로직이 이 레이어에 포함.
영속 계층 : 데이터베이스와 관련 로직을 구현하는 부분.
레이어드 아키텍처의 핵심 요소 : 단방향 의존성. 각 레이어는 자기보다 하위에 있는 레이어에만 의존. 영속 계층은 비즈니스에만 의존, 비즈니스 계층은 표현 계층에만 의존한다. 각 레이어 간의 역할도 뚜렷한 것이 또 다른 특징.
예제에서는 view, service, model의 폴더로 나누어서 기존에 작업했던 소스를 분리한다.
예상했던 것보다는 별 내용이 아니었다. 이런 문제는 그냥 DRF 같은 프레임워크를 쓰면 더 이상 고민할 필요조차 없는 이슈라서..
따로 프레임워크를 사용하지 않는다면 충분히 도움은 될 것 같다.
'Study > Python' 카테고리의 다른 글
깔끔한 파이썬 탄탄한 백엔드 - #12 더 좋은 백엔드 개발자가 되기 위해.. (0) | 2021.08.07 |
---|---|
깔끔한 파이썬 탄탄한 백엔드 - #11 파일 업로드 엔드포인트 (0) | 2021.08.06 |
깔끔한 파이썬 탄탄한 백엔드 - #8 unit test (0) | 2021.08.04 |
깔끔한 파이썬 탄탄한 백엔드 - #7 인증 (0) | 2021.08.03 |
깔끔한 파이썬 탄탄한 백엔드 - #6 데이터베이스 (0) | 2021.08.02 |