클린 아키텍처로 API를 설계해 봅니다.

클린 아키텍처를 실제로 API 설계에 적용하는 경우의 구성을 생각했기 때문에 정리.

깨끗한 아키텍처 구성 요소




  • 종속성은 항상 단방향

  • 엔티티


  • 코어 로직 작성
  • 종종 데이터 모델이 설명됩니다.
  • DB에 데이터를 저장할 때 인터페이스를 주입한다.

  • 사용 사례


  • 응용 프로그램 특정 규칙 만들기
  • 순서를 기술. 로직 종속 제어 구문은 유스 케이스에 설명되어 있습니다

  • 인터페이스 어댑터


  • 외부와의 접속. 입력을 받고 유스 케이스 함수에 흘린다
  • APIHandler, DBManager 등

  • 프레임워크 & 드라이버


  • Router
  • EntryPoint

  • 참고 : htps : // 코 m / 히로 타칸 / MS / 698c1f5773

    go로 API를 작성할 때 소스 코드 구성


  • src
  • entity
  • 로직을 작성한다.
  • usecase로부터 받은 Interface를 실행해 처리한다.

  • usecase
  • APIHandler로부터 Request, Repostiry, Interface를 받고 entity를 호출한다.
  • 시퀀스를 기술한다. 시퀀스 만 작성하십시오
  • 사용하는 InterFace는 유스 케이스에 기재되어 있습니다

  • Interface
  • APIInterface
  • 외부 API 호출 처리 설명

  • Repositry
  • 데이터 스토어가 가지는 데이터를 기술.

  • APIHandler
  • 엔드포인트 작성
  • API 입력 및 Response 구성
  • 드라이버를 받고 usecase 호출
  • usecase가 사용하는 Repository와 APIInterface를 여기에서 설정

  • 각 InterFace를 묶는다


  • driver
  • router.go
  • 라우팅 작성
  • 사용하는 기타 driver를 모두 여기에서 건네준다

  • datastore.go
  • Datastore 라이브러리 작성
  • 여기의 인프라는 별로 무엇이든 좋다
  • redis나 db 등의 액세서
    - 필요한 경우이 근처에 둡니다



  • main.go
  • driver를 호출한다.



  • 장점


  • 종속성은 항상 단방향이므로 테스트를 쓰기 쉽습니다.
  • DB, 인프라, API 등의 테스트 모듈은 사용 주름이 효과가 있으므로 한 번 쓰면 테스트가 간단합니다.

  • DB 등의 기능과 직접 관련이 없는 인프라 교환이 비교적 용이
  • GCP에 올려 놓기 때문에 Datastore를 사용하든지, 검증을 위해 일단 sql을 사용하면 같은 전환이 편합니다.


  • 단점


  • 의존성을 일방향으로 하기 위해 의존성의 주입을 하고 있기 때문에, 적당히 반대로 읽어들이기 어려운 코드가 완성된다
  • 의존성 주입을 수행하는 인터페이스는 데이터 인프라, 외부 API 발행 등이므로, 사용하는 인터페이스를 미리 규칙화하면 해결할 수 있습니다.

  • 라우팅과 간단한 논리로 처리 할 수있는 규모의 API 만 만들면 중복
  • 좋은 웹페이지 즐겨찾기