클라우드 네이티브 설계란?
한마디로 말하자면 MSA를 기반으로 Kubernetes,Docker, Jenkins를 최대한 활용하며 Devops를 기반으로 설계하는 것이다.
- MSA란?
Micreo service Architecture로 비지니스 로직을 하나의 서비스 패키지로 묶어 한 곳에서 다 설계했던 모놀리식 아키텍쳐를 벗어나 각 서비스마다 각자의 DB를 가지는 설계 구조이다.
이 경우는 DB간의 통신 및 서비스 간의 통신을 API를 통해 이뤄진다.
아래의 그림을 보면 좀 더 이해하기 편할 것이다.
이런 MSA에는 서비스를 추가하거나 수정하는데에서 더 유연하고 자유성을 부여한다. 그렇기 때문에 개발 및 운영에서 장점을 가질 수 있습니다.
이런 마이크로 서비스를 구축하기 위해 Docker를 많이 활용하며 그것을 효율적으로 관리하기 위해 Kubernetes를 사용한다.
Docker와 Kubernetes는 따로 연재해 나갈 예정이니 참고하길 바란다.
MSA를 얘기했던 이유는 나만의 지극히 개인적인 의견이지만 클라우드 네이티브 설계에 알맞은(?) 앱,WEB 개발을 하는 개발자들이 생각해야하는 가장 기본이라고 생각합니다.
오늘 회식을 하면서 병주와 현우라는 같이 공부하는 친구와 이 주제에 대해 이야기를 나눴다. 사실 아직 나는 CI/CD 및 파이프라인에 대해서도 잘 모른다.
근데 진짜 단순히 호기심에 대화를 시작했고, 너무 궁금하다.
- 그래서 무선 오늘 얘기했던 결론은 먼저 CI/CD를 구축하고 개발하는 것이 옳은 것 같다라는 생각과 함께 마쳤다.
그 이유는 아래와 같다.
사실 위의 두 가지 장점만 이해해도 충분히 선 인프라 구축이 맞는 것 같다. 하지만 아직 CI/CD에 대한 정확한 개념과 Jenkins,Github actions 등에 대한 이해가 부족하므로 공부해가면서 무엇이 더 좋을지 고민을 이어갈 것이다.