Skip to content

Posts MicroService 시스템을 잘 만들기 위해 고민하고 싶은 문제들 #
Related pages Similar titles

내가 경험한 Java 환경의 MicroService 시스템, 또는 API로 시스템을 만들 때 겪었던 고민들을 적어보고 하나씩 정말 문제가 무엇인지, 어떻게 해결해나갈 수 있는지 고민해보자.

  1. API 호출 시 API 사용자에게 데이터 모델(Spec)은 어느 수준으로, 어떻게 공유해야 하나?
  2. 어떤 API에서 발생한 장애가 전체 시스템의 장애로 전파되지 않으려면 어떻게 해야 하나? (어디서 문제가 발생하는지를 아는 게 먼저이긴 하다.. Hystrix 사용하기도 쉽지 않더라..)
  3. 도대체 API는 어떤 "기준"을 가지고 분할하고 합쳐야 하는 건가? (당연히 답은 없지만 좋은 Practice는 정리해볼 수 있겠지..)
  4. DB 테이블 JOIN을 API로 옮겼을 때의 부작용과 비효율성을 어떻게 극복할 것인가?
  5. 궁극에는 API만 분리하는 것이 아니라 DB를 분리함으로써 그 효과를 극대화 해야하는 데 어떻게 시작을 해야하지? 무슨 문제가 있을까? 물리적으로 DB를 분리한다고 끝이 아니니까~
  6. API 사용자(다양한 화면, 제3자 프로그램 등)의 요구(="나는 필요한 것만 받고 싶어요~")를 최대한 충족하면서 API 수를 최소화할 수 있는 방법은 무엇인가?
  7. 내가 만든 API를 테스트하기 위해서 다른 API가 필요한데 어디를 바라보고 테스트해야 하는건가? 가장 독립적으로, 그리고 현실적으로 테스트할 수 있는 방법은?
  8. API 간의 의존성을 최소화하고 내가 만든 API를 빠르게 배포할 수 있는 방법은?
  9. 운영하다가 장애(CS)가 발생해서 여러 API를 거쳐 처리한 사용자의 실행 이력을 추적하고 싶은데, 하나의 API가 여러 WAS로 이중화 되어 있고, 이러한 API를 여러 번 거쳐갈텐데 로그를 어떻게 찾아 보는 방법이 가장 효율적인가? (=어떻게 모아 주는 방법이 효율적인가?)
  10. 내가 만든 API를 API 사용자에게 어떻게 하면 가장 쉽고 정확하게 전달할 것인가? (=API 문서를 "잘" 만들려면 어떻게 해야하지?)
  11. API 호출 횟수(round-trip)을 줄일 수 있는 방법은?
  12. 개발/운영 조직은 어떻게 분할해야 API를 효율적으로 발전시켜 나갈 수 있는 걸까?
  13. REST API(HTTP를 사용해) 디자인에 대한 각종 글이 엄청 많은데..이걸 다 지켜야 하는건가? 어떻게 해야하지?
  14. Native APP의 서버로 자연스럽게 API를 만들어야 하는데 이 때 더 고려해야 하는 건 무엇인가?
  15. API Controller 개발 방법을 UI Controller 만들 때처럼 동일하게(좀 더 쉽게) 가는 것이 좋을까? 아니면 HTTP 각종 정보를 직접 다루도록 열어두는 것이 좋을까?
  16. API하면 DevOps, DevOps하는데 그렇다면 실제로 가장 중요하고 필요한건 무엇일까?
  17. 도대체 Docker를 쓰면 MicroService 운영을 위해 무슨 도움이 되는거지?
  18. "저 API를 써야 하는 건 같은데.. 그걸 쓰려니 내가 간단히 만드는게 좋겠다.." 이럴때는...? 방치하면 시스템에는 점점 코드 중복이 넘쳐날테니까..
  19. API 버전 관리는 어떻게 하는 것이 좋을까?

Other Posts #