👋 Hello, I am Seung-ho Ham

🧑🏻‍💻 A Developers who create code that changes the world

Development/APIs

고객 관리 프로젝트 구조 분석하기 - 각 Layer의 역할

Potato_H 2024. 9. 12. 17:14
반응형

DB - MongoDB / Framwork - Flask

api-customer-manager
├── common
│   ├── conf
│   │   ├── __init__.py
│   │   ├── ConfigControl.py
│   │   └── parser_toml.py
│   ├── db
│   │   ├── __init__.py
│   │   ├── influxdb_interface.py
│   │   ├── mongodb_control.py
│   │   └── mongodb_interface.py
│   └── system_protos
│       ├── __init__.py
│       ├── base_model.py
│       ├── conv_time.py
│       ├── datetime_calc.py
│       ├── decorator.py
│       ├── dict_control.py
│       ├── json_control.py
│       ├── mainlogger.py
│       ├── make_filter_time.py
│       ├── PKLogger.py
│       ├── RestWrap.py
│       ├── SingletonTemplate.py
│       ├── system_connector.py
│       ├── system_response.py
│       └── util.py
├── control
│    └── customer_control.py
├──  function
├── interface
├── models
│   ├── base_model.py
│   ├── user.py
│   ├── user_param.py
│   └── user_property.py
├── service
├── swagger
│   └── swagger.yaml
├── app.py
├── config.toml
├── config_dev.toml
├── Dockerfile
├── README.md
└── requirements.txt

 

각 Layer들의 역할

1. common

공통 모듈과 유틸리티를 모아둔 디렉토리

디렉토리 안에는 설정 파일 처리, 데이터베이스 제어, 유틸리티 함수 등 다양한 기능을 제공하는 모듈이 포함되어 있음

  • conf : 설정 관련 모듈을 포함하고 있음, ConfigControl.py는 애플리케이션의 설정을 처리하고 관리하는 역할을 함
  • db : 데이터베이스 관련 모듈을 포함, MongoDB 및 InfluxDB와의 인터페이스 및 제어 기능을 제공함
  • system_protos : 시스템 레벨에서 공통적으로 사용되는 유틸리티와 프로토콜을 정의함(모델 클래스, 데코레이터, 시간 변환 유틸리티, 로깅 기능 등을 포함)

2. control

비즈니스 로직을 처리하는 레이어

고객 정보 조회, 수정, 삭제 등 핵심 로직이 구현되어 있음

  • customer_control.py: 고객 정보를 처리하는 비즈니스 로직을 포함하고 있음(데이터베이스에서 고객 데이터를 조회, 수정, 삭제하는 등의 작업 수행)

3. function

기능 모듈을 포함하는 디렉토리

현재는 비어 있으나, 특정한 기능이나 유틸리티 함수를 추가할 때 사용

4. interface

API의 인터페이스 정의를 포함하는 디렉토리

현재는 비어 있지만, 클라이언트와 서버 간의 데이터 교환 형식이나 인터페이스를 정의하는 파일들이 위치할 수 있음

5. models

애플리케이션에서 사용하는 데이터 모델을 정의하는 레이어

데이터 구조와 비즈니스 로직에서 사용하는 클래스들이 포함되어 있음

  • base_model.py: 기본 모델 클래스 - 모든 데이터 모델이 상속해야 하는 공통 속성과 메서드를 정의
  • user.py: 사용자 관련 데이터 모델을 정의(사용자 정보와 관련된 속성과 메서드를 포함)
  • user_param.py: 사용자 파라미터 모델로, 사용자 정보와 관련된 요청 파라미터를 처리
  • user_property.py: 사용자 속성 모델로, 사용자 데이터의 세부 속성들을 정의

6. service

애플리케이션의 서비스 로직을 포함하는 레이어

여러 개의 비즈니스 로직을 조합하여 더 높은 레벨의 서비스를 제공할 때 사용될 수 있음

7. swagger

API 문서화를 위한 디렉토리

Swagger는 REST API를 문서화하기 위한 도구로 API의 경로, 메서드, 요청 및 응답 형식을 정의

  • swagger.yaml: API 문서화 파일로, API의 엔드포인트, 메서드, 요청/응답 형식 등을 정의 (개발자와 사용자가 API를 쉽게 이해하고 사용할 수 있게 해줌)

 

  • app.py: Flask 애플리케이션의 진입점으로, 애플리케이션 서버를 실행하고 라우팅을 설정하는 메인 파일(main)
  • config.toml / config_dev.toml: 애플리케이션 설정 파일로, 개발 환경 및 배포 환경에 따라 다른 설정을 제공함
  • Dockerfile: Docker 이미지를 생성하기 위한 설정 파일
  • README.md: 프로젝트에 대한 설명을 제공하는 파일로, 사용법과 주요 기능을 설명
  • requirements.txt: Python 패키지 관리자(pip)로 설치할 패키지들의 목록을 정의한 파일

'Development > APIs' 카테고리의 다른 글

HTTP 204 상태 코드 처리 오류  (0) 2024.09.20
고객 정보 CRUD api 구현  (0) 2024.09.11