클라우드 서비스 (Cloud Service)와 배포 환경에 대해

bagt13·2022년 8월 23일
0

AWS

목록 보기
4/4
post-thumbnail

클라우드(Cloud) 서비스란?

서버의 자원과 공간 및 네트워크 환경을 제공하는 서비스

클라우드 서비스의 장점

  • 필요할 때마다 컴퓨팅 능력을 유연하게 조절할 수 있다
  • 사용한 만큼의 요금만 지급한다
  • 스냅샷을 이용해 다른 컴퓨터로 즉시 이주(migration)가 가능하다

단점

  • 운영 환경 자체가 클라우드 제공자에게 종속된다.
    -> 클라우드 서비스에 문제가 생기면 내가 배포하고 관리하는 환경에도 영향을 끼친다.

단점이 존재하긴 하지만, 클라우드 서비스를 사용함으로써 얻는 이점이 더 많기 때문에 널리 사용되고 있다.


대표적인 클라우드 서비스의 형태

  • SaaS (Software as a Service) : 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우

  • PaaS (Platform as a Service) : 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우

  • IaaS (Infrastructure as a Service) : 클라우드 제공자가 가상 컴퓨터까지 제공하는 경우

클라우드 제공자로부터 '얼마만큼의 서비스를 제공받느냐' 에 따라서 이러한 서비스의 형태가 구분된다


개발 환경과 배포 환경

배포가 되기까지의 전체적인 개발 단계는 기본적으로 4단계 Developement -> Integration -> Staging -> Production 를 거쳐서 진행된다.

  1. Development (개발단계)

    • 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정
  2. Integration 단계

    • 각자 작성한 코드들을 합치는 과정
    • 내가 작성한 코드가 다른 코드를 침범해서 오류를 일으키거나, 코드 간에 conflict가 있지는 않은지 확인하는 과정을 거친다.
  3. Staging 단계

    • 실제 출시 단계인 Production 단계와 가장 유사한 환경에서 테스트를 진행한다.
    • 실제 데이터를 복사해서 문제가 있지 않은지 등 다양한 환경에서 테스트를 진행한다.
    • 또한 작성된 코드가 마케팅 혹은 디자인팀 등 다른 부서에서 예상했던 결과인지 확인을 거친다
  4. Production 단계

    • 개발된 서비스를 출시하는 단계이다.
    • 사용자가 접속할 수 있는 운영 환경에서 코드를 구동하고 서비스를 제공한다.
    • 실제 데이터를 가지고 서비스가 운영되기 때문에 문제가 생기면 안된다.

여기서, Development 환경과 Production 환경은 서로 다를 수가 있다.
예를 들어 로컬의 node버전, 인증정보, DB Endpoint 등은 클라우드의 그것들과 다를 수 있다.

따라서, 환경의 차이를 이해하고 '환경 설정을 코드와 분리' 하는 것이 중요하다.


작성한 코드가 다른 환경에서도 정상적으로 작동할 수 있게 하려면?

  • 절대경로 대신 상대경로를 사용한다.

    코드 상의 모든 곳에 절대 경로가 아닌 상대 경로를 사용하는 것을 지향한다.

  • 환경에 따라 포트를 분기할 수 있도록 환경변수를 설정해준다.

    설정을 환경 변수(environment variable; envvars/env라고도 불린다)에 저장해야 한다.

    환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있으며, 설정 파일과 달리 실수로 코드 저장소에 올라갈 가능성도 낮다.

  • Docker와 같은 개발환경을 통일시키는 솔루션을 사용한다.

    Docker와 같은 가상화 도구를 사용하면 환경 자체를 메타데이터로 담아서 모든 개발 환경을 통일시칼 수 있다

     

📃 Reference

profile
주니어 백엔드 개발자입니다😄

0개의 댓글