Cloud native 설계

윤태호·2023년 2월 14일
0

Infra

목록 보기
1/3

1. 클라우드를 왜 하는지??그리고 어떤 이점이 있는지 알고 쓰는 건가요??

  • Kubernetes를 배우고 사이드 및 파이널 프젝을 기획하고 준비하는 단계에 있으면서 단순 앱개발을 뛰어넘어 배포 및 인프라에 대한 호기심과 고민이 생기기 시작했으며, 동료들과 선배포 후배포, 클라우드 네이티브 설계, CI/CD, Jenkins, git 등에 대한 다양한 이야기를 나누면서 전체적인 설계에 대해 다시 생각하게 되었다.
  • 이 생각을 정리하고, 그것에 대한 공부를 정리하고자 한다.

    클라우드 네이티브 설계란?
    한마디로 말하자면 MSA를 기반으로 Kubernetes,Docker, Jenkins를 최대한 활용하며 Devops를 기반으로 설계하는 것이다.

    • MSA란?
      Micreo service Architecture로 비지니스 로직을 하나의 서비스 패키지로 묶어 한 곳에서 다 설계했던 모놀리식 아키텍쳐를 벗어나 각 서비스마다 각자의 DB를 가지는 설계 구조이다.
      이 경우는 DB간의 통신 및 서비스 간의 통신을 API를 통해 이뤄진다.
      아래의 그림을 보면 좀 더 이해하기 편할 것이다.

      이런 MSA에는 서비스를 추가하거나 수정하는데에서 더 유연하고 자유성을 부여한다. 그렇기 때문에 개발 및 운영에서 장점을 가질 수 있습니다.
      이런 마이크로 서비스를 구축하기 위해 Docker를 많이 활용하며 그것을 효율적으로 관리하기 위해 Kubernetes를 사용한다.
      Docker와 Kubernetes는 따로 연재해 나갈 예정이니 참고하길 바란다.

MSA를 얘기했던 이유는 나만의 지극히 개인적인 의견이지만 클라우드 네이티브 설계에 알맞은(?) 앱,WEB 개발을 하는 개발자들이 생각해야하는 가장 기본이라고 생각합니다.

2. 이어서 해볼 얘기는 CI/CD를 위한 인프라를 먼저 구축하는게 맞나?아니면 앱 및 웹 개발을 끝나고 인프라를 구축하는게 맞나??

오늘 회식을 하면서 병주와 현우라는 같이 공부하는 친구와 이 주제에 대해 이야기를 나눴다. 사실 아직 나는 CI/CD 및 파이프라인에 대해서도 잘 모른다.
근데 진짜 단순히 호기심에 대화를 시작했고, 너무 궁금하다.

  • 그래서 무선 오늘 얘기했던 결론은 먼저 CI/CD를 구축하고 개발하는 것이 옳은 것 같다라는 생각과 함께 마쳤다.

그 이유는 아래와 같다.

  • User가 사용하는 환경을 미리 구축해놓고 테스트를 해야 나중에 발생하는 디버그를 대응하는데 더 수월하다.
  • 각자의 Local에서 이뤄지는 테스트는 신뢰 할 수 없다.(IDE,DB 등의 다른 버전 이슈 등 다양한 환경 변수)

사실 위의 두 가지 장점만 이해해도 충분히 선 인프라 구축이 맞는 것 같다. 하지만 아직 CI/CD에 대한 정확한 개념과 Jenkins,Github actions 등에 대한 이해가 부족하므로 공부해가면서 무엇이 더 좋을지 고민을 이어갈 것이다.

이제 CI/CD와 Jenkins에 대해 공부를 좀 해보자. 다음 주제는 CI/CD에 다뤄보겠습니다.

profile
성장하는것을 제일 즐깁니다.

0개의 댓글