[AWS] 1. AWS의 이해

출처: 클라우드 서비스 개발자를 위한 AWS로 구현하는 CI/CD 배포 입문
김미숙's avatar
Jul 31, 2025
[AWS] 1. AWS의 이해
출처: 클라우드 서비스 개발자를 위한 AWS로 구현하는 CI/CD 배포 입문

DevOps

소프트웨어 개발(Dev)과 IT 운영(Ops) 팀 간의 협업을 강화하고, 자동화와 지속적인 통합/배포(CI/CD)를 통해 소프트웨어 개발 프로세스를 효율적으로 개선하는 방법론
 

On-Demand와 On-Premiss의 차이

📌 1. 온프레미스(On-Premise)

  • 온프레미스는 “자체 구내(premises)”에 라는 뜻 그대로, 기업이 직접 서버, 스토리지, 네트워크 장비 등의 하드웨어와 소프트웨어를 구매하여 자사의 물리적 시설(데이터 센터 또는 서버실) 내에 설치하고, 운영하며, 관리하는 방식
  • 직접 장비를 구매·설치하고, 회사 내부에 서버 인프라를 구축하여 사용하는 방식
특징
  • 서버, 스토리지, 네트워크 장비 등을 기업이 직접 소유
  • 유지보수, 백업, 보안 등도 기업이 직접 관리
  • 초기 비용(구매, 구축 비용)이 크고, 설치 시간도 오래 걸림
  • 커스터마이징에 유리하지만, 확장성은 떨어짐
  • 예: 사무실 내 전산실에 물리 서버를 설치하고, 내부 직원만 사용할 수 있는 그룹웨어를 운영하는 경우

📌 2. 온디맨드(On-Demand) = 클라우드

  • 온디맨드는 "요구가 있을 때마다"라는 뜻. 이는 IT 자원(서버, 스토리지, 데이터베이스, 소프트웨어 등)을 인터넷을 통해 필요한 만큼만 빌려 쓰고, 사용한 만큼만 비용을 지불하는 방식을 의미
  • 온디맨드는 클라우드 컴퓨팅의 핵심적인 특성 중 하나
  • 필요할 때만 인터넷을 통해 서버·저장공간 등을 빌려 쓰는 방식 (주로 클라우드 서비스)
특징
  • AWS, Azure, GCP 같은 클라우드 제공자가 인프라를 제공
  • 필요한 만큼만 사용하고 비용을 지불 (종량제)
  • 신속한 확장, 자동화, 유지보수 편리
  • 보안·신뢰성은 클라우드 업체의 SLA에 의존
  • 예: AWS EC2에서 서버를 몇 분 만에 생성해 웹 서비스를 올리는 경우

🔍 요약 비교

구분
온프레미스 (On-Premise)
온디맨드 (On-Demand)
위치
회사 내부
클라우드 제공자 서버
초기 비용
높음 (장비 구매)
낮음 (필요한 만큼만 지불)
유지보수
자체 인력 필요
클라우드 업체가 관리
확장성
제한적
유연하고 빠름
보안
내부 통제 가능
외부에 위탁 (보안 서비스는 우수함)
도입 속도
느림 (설치 필요)
빠름 (몇 분 안에 가능)

🧠 정리 한 줄 요약

  • 온프레미스: “직접 서버 사서 내가 다 관리”
  • 온디맨드: “필요할 때만 클라우드에서 빌려서 써”
 

CI / CD

  • 소프트웨어 개발에서 지속적 통합(Continuous Integration)과 지속적 배포/전개(Continuous Delivery / Deployment)를 말한다
  • 자동화된 개발·배포 프로세스를 의미

✅ CI (Continuous Integration) — 지속적 통합

  • 개발자가 코드 변경사항을 자주(하루에도 여러 번) 공유 저장소에 병합(Push)
  • 자동 빌드 및 테스트를 통해 코드가 잘 작동하는지 빠르게 확인
  • 예: 개발자 A가 로그인 기능을, 개발자 B가 게시글 기능을 만들고 동시에 작업 → 코드를 Git에 Push → 자동으로 빌드 & 테스트 → 충돌/에러 확인

✅ CD (Continuous Delivery / Deployment)

1. Continuous Delivery — 지속적 전달
  • 테스트까지 통과한 코드를 스테이징 서버에 자동 배포
  • 실제 서비스 배포는 사람이 버튼 한 번 누르면 가능
2. Continuous Deployment — 지속적 배포
  • 테스트 통과 후, 실제 운영 서버에도 자동으로 배포
  • 완전한 자동화
📌 차이 요약
항목
Continuous Delivery
Continuous Deployment
운영 배포
수동 (승인 후 배포)
자동 (테스트 통과 시 바로)

🛠 도구 예시

  • CI/CD 도구: GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis CI
  • 배포 도구: Docker, Kubernetes, Ansible 등과 함께 사용

📈 왜 쓰는가?

  • 코드 품질 향상: 테스트 자동화로 버그 조기 발견
  • 빠른 배포: 신기능/수정사항을 빠르게 사용자에게 전달
  • 자동화: 사람이 수동으로 하는 빌드/테스트/배포 작업을 줄임

🧱 CI/CD 기본 흐름 요약

[코드 작성][Git Push][CI: 자동 빌드 & 테스트][CD: 스테이징 또는 운영 서버 자동 배포]
Share article

parangdajavous