CLOUD-NATIVE

dodo·2024년 10월 22일

보통 면접에서의 첫번째 질문은 API, Restful API, CloudNative 이다

cncf.io

오픈소스를 지향하는 곳
https://landscape.cncf.io/

서비스 메시를 쓸수 있냐 없냐를 나눌 정도

클라우드 네이티브의 핵심

  • 컨테이너를 사용해야 한다
  • 서비스 메시를 사용해야 한다
  • 마이크로 서비스를 구축해야한다
  • 불편 인프라를 갖춰야 한다
  • 선언적 API (api 문서 등)

-> 클라우드 네이티브 기술

확장성, 탄력성 및 장애 격리성이 뛰어난 애플리케이션을 구축해야 한다

즉, 장애가 발생해도 사용자 입장에서는 장애가 없어야 한다

Point: 클라우드 네이티브 기술을 적용해야 경쟁력이 있다!!

핵심 기술

  • DevOps

    소프트웨어 개발 방법론의 하나로, 개발 담당자와 운영 담당자가 연계하여 협력하는 자동화된 협업 프로세스
    CI/CD
    마이크로 서비스
    코드형 인프라 (IaC) <- 요즘 많이 물어보는 주제
    모니터링 및 로깅 (Observability, 관측 가능성) < -중요 개념
    커뮤니케이션 및 협업 ex. Jira, Slack, Git 등등
  • CI/CD

    개발 생산성을 높이기 위한 방법론
    코드, 빌드, 테스트까지는 CI
    프로비저닝, 배포, 모니터링은 CD
  • Containers

    애플리케이션 실행을 위한 바이너리와 라이브러리 등을 Packaging하여 가상화 한 것
    기존의 가상 머신에 비해 경량의 가상환경을 만들고, 이식성이 뛰어나기 때문에 동일한 서버 환경에서 더 많은 애플리케이션을 구동할 수 있음
    -> 이미지화
  • MicroServices

    데브옵스에 최적화된 작고 독립적인 서비스로 구성된 구조적이고, 조직적인 접근 방식
    애플리케이션을 구성하는 각 모듈을 독립된 서비스로 분리
    각 서비스가 하나의 워크로드를 책임지도록 함
    즉, 컨테이너 등을 통해 독립적으로 서비스를 구현하여 서로 영향을 끼치지 않도록 한다

    MicroServices의 반대인 Monolithic 구조는 신규 기능 추가 시 테스트, 빌드, 테스트 등의 작업 시간이 길어질 수 있다.
    또한, 버전 업데이트 시 다른 모듈에서의 오류가 발생할 가능성이 있다

애플리케이션 개발을 위한 클라우드 네이티브 원칙

  • 안정성
  • 확장성
  • 예측성
  • CI/CD
  • 보안
    으로 이해하면 된다

CI/CD 배포 자동화 도구가 필요한 이유

  • 효율성 향상: 배포 시간 단축
  • 일관성: 동일 프로세스로 반복적 수행
  • 빠른 피드백: 검증을 통한 빠른 문제 해결
  • 팀 협업 증진
  • 품질 향상: 코드 품질 향상, 릴리즈의 신뢰성 확보
  • 신속한 배포

CI/CD tools

Bamboo, CircleCI, Jenkins 등등 좋은 CI 도구가 많지만 보통 Jenkins가 무료 오픈소스이기 때문에 많이 사용된다

실제 S사의 모델

Jenkins

  • 광범위한 플러그인 제공
  • 높은 사용자 정의 가능성
  • 스크립팅 가능성 (Jenkinsfile) <- 이걸 열심히 공부하면 된다
  • 강력한 커뮤니티 지원

GitLab

  • 통합 CI/CD
  • 자동 DevOps
  • 포괄적인 Toolset 지원
  • 높은 확장성
  • 유료
profile
클라우드 데이터 플랫폼 주니어 개발자 도도입니다!

0개의 댓글