TIL[82].API 아키텍처

jake.log·2020년 10월 24일
0

'브랜디'에서 기업협업을 하는 중이다. 기업 협업과제로 admin페이지 클론 프로젝트를 진행중이다.
프로젝트를 진행하며 Flask를 사용해야해서 파일 구조를 직접 짜야한다. 지금까지는 계속 Django만 사용을 해왔어서 API 아키텍처에 대한 공부가 필요했다. 따라서 오늘은 API 아키텍처에 대한 공부를 진행했다.

1. API 아키텍처란?

하나의 파일에 모든 코드를 넣어서 API를 구현하는 방법의 장점은?

간단하다. 

하지만 코드의 양이 많아진다면?

더 복잡해진다. 코드의 유지 보수가 어려워진다. 

따라서 많은 개발자들이 논리적, 기능적으로 영역을 구분하여 코드를 관리하는데, 이렇게 코드의 구조를 체계적이고, 효율적으로 구현하는 일을 아키텍처라고 한다.

아키텍처 패턴 구현시 생각할 요소들

- 확장성:시스템 규모가 커질 경우를 고려하여 확장성이 높은 구조로 코드를 구현해야 한다.
- 재사용성: 재사용성이 높아야 코드의 양도 적어지고, 속도도 높아진다.
- 보수 유지가능성: 구조적으로 로직이 잘 정리가 되고 나뉘어 있어야 한다. 추상화,독립적이어야 한다.
- 가독성: 어려운 로직일수록 더 가독성이 높게해야 한다.
- 테스트 가능성: 추상화가 잘 구현 되어 있고, 역할이 잘 나뉜 코드

2. 레이어드 패턴

백엔드 API 패터 중 가장 널리 적용되는 패턴으로 Multi-tier 아키텍처 패턴이라고도 한다.

논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴이다.

1 . Presentation layer

해당 시스켐을 사용하는 사용자, 클라이언트 시스켐과 직접적으로 연결되는 부분이다. UI, API가 이 부분에 해당한다. HTTP 요청을 읽어들이는 로직을 구현한다. 그 이상의 역할은 하지 않는다.

파일 디렉토리 : view

2 . Business layer

비즈니스 로직을 구현하는 부분으로, 시스템 로직을 구현한다.

파일 디렉토리 : service

3 . Persistence layer

데이터베이스와 관련된 로직을 구현하는 부분이다. 데이터 생성, 수정, 읽기 등을 처리한다.

파일 디렉토리 : model

3. 레이어트 아키텍처의 핵심 요소

단방향 의존성
presentations layer는 business layer에
business layer는 persistence layer에게만 의존하며 그 외에는 완전히 독립적이다.

명확한 레이어 역할
구조와 역할을 명확하게 하면 확장성이 높아진다.

참고서적: 깔끔한 파이썬 탄탄한 백엔드/송은우

profile
꾸준히!

0개의 댓글