MSA서비스에서의 API
개요
MSA는 API를 이용해 통신을 한다. 그런데…. 의존성이 생기니까 관리가 힘들다. 버전관리가 필요.
버전관리 방법
동시배포
의존성이 있는 모든것을 동시배포 그냥 전체배포라고 보면 된다. * 서비스가 작을 때 가능 * 오류가 나면 매우 난감함 * DB스키마가 변경됐을 가능성이 크기 때문에 rollback도 쉽지가 않다.
소스코드 내에서 버전을 관리
컨트롤러, 라우터 등등에서 /v1/ /v2/ 이런방법으로 버전을 표시 * 버전업이 자주 발생하면? * 헷갈리겠지
배포시 태깅
jenkins, git-tag, docker, kubernetes 등등 사용해서 해결할 수 있는 부분 해놓으면 편하긴 하겠지만… 구현자체가 복잡하다.
결론은…
어떻게 배포를 해도 오류가능성이 존재하겠지만… 관리가 쉬운편이 더 낫지 않을까 적절한 방법을 골라서 정책을 정하고 지키는게 중요.
MSA에 필요한 API Doc의 종류
Human - Machine
API Doc은 Hunam, Machine - 두가지 버전이 필요하다.
Human
swagger
Machine
Hataoes 그리고 json형태의 doc??? 에러로깅 방식..?? 등 지원
Versioning(API Change log doc)
- history
-
plan
- deprecated 일정예고
- current 세가지 정보를 모두 표현해야한다
검증테스트
build runtime 버전 check 의존성 api들을 모두 기록해놓는다. depends on - (auth-1.1) depends on - (gis-201610) …. 기록해놓은 부분은 내가 참조했 버전이 맞는지 버전만 호출해서 확인. 의존성이 있는 MS들의 test 인스턴스가 떠있거나 docker-compose, kubernetes 등으로 관리되고 있어야 가능한 부분. 아닌가.. 버전만 확인하니까 git 주소만 알아도 가능할 것 같다.
유닛테스트일수도 있는데 좀 더 강하게 빌드시 확인을 해야한다.