Post

클라우드프로그래밍 1주차 — 클라우드 컴퓨팅과 AWS, 리눅스 기초

클라우드 컴퓨팅의 기본 개념과 AWS 서비스 구성을 정리하고, 리눅스 기초 명령을 우분투 컨테이너에서 다뤄 본 1주차 기록.

클라우드프로그래밍 1주차 — 클라우드 컴퓨팅과 AWS, 리눅스 기초

클라우드프로그래밍 1주차는 세 가지를 다뤘다. 클라우드 컴퓨팅 개념, AWS 서비스 구성, 그리고 가상머신에 리눅스를 올려 기초 명령을 다루는 것. 개념을 정리하고, 리눅스 기초 명령은 직접 실행한 결과를 함께 정리한다.

클라우드 컴퓨팅이란

온프레미스에서 클라우드로

  • 온프레미스(on-premises): on + premise(건물/토지). 사용자가 자체 공간과 자원으로 직접 구축·운영하는 전통적인 방식이다. 모든 걸 직접 챙겨야 해서 부담과 비용이 크다.
  • 클라우드(cloud): 인터넷 어딘가에 “구름처럼” 모여 있는 IT 자원의 집합. 온프레미스의 한계를 보완한다.
  • 클라우드 컴퓨팅: 인터넷을 통해 온디맨드(on-demand) 로 IT 자원을 제공하고, 사용한 만큼만 비용(Pay-Per-Use) 을 내는 서비스다.

클라우드 컴퓨팅의 세 가지 이점

  1. 민첩성 — 컴퓨팅·스토리지·DB부터 IoT·머신러닝·빅데이터까지 폭넓은 기술을 빠르게 가져다 쓸 수 있다.
  2. 탄력성 — 미리 과하게 구성해 둘 필요 없이, 필요한 만큼 할당받아 늘리고 줄인다.
  3. 비용 절감 — 데이터센터를 직접 짓는 비용에 비하면 사용량 기반 과금이 유리하다.

서비스 유형 (IaaS / PaaS / SaaS)

공급자가 어디까지 관리해 주느냐로 나뉜다. 강의에서는 “요리” 비유로 설명한다.

구분공급자 관리 범위비유
온프레미스(없음, 사용자가 전부)재료 손질부터 직접 요리
IaaS서버/스토리지/네트워크 + 가상화밀키트로 약간만 조리
PaaS+ OS/미들웨어/런타임음식점에서 배달
SaaS애플리케이션까지 전부출장 뷔페

구축 모델·가상화·서버리스

  • 퍼블릭(공급자 주체, AWS/GCP/Azure) / 프라이빗(사용자 주체, 온프레미스, 보안↑ 확장성↓) / 하이브리드(둘을 전용선으로 연결).
  • 가상화: 물리 서버의 CPU·메모리 일부를 떼어 독립된 서버처럼 동작하는 가상 서버를 만드는 기술.
  • 서버리스(serverless): 서비스가 호출될 때만 서버를 가동해, 가동 시간을 줄여 비용을 아끼는 방식.

AWS 서비스 둘러보기

  • AWS(Amazon Web Service): Amazon의 자회사로, 200개가 넘는 퍼블릭 클라우드 서비스를 제공하는 점유율 1위 사업자다.
  • 리전(Region): 데이터센터가 모여 있는 물리적 지역(국내는 서울 리전). 가용 영역(AZ) 은 리전 안의 개별 데이터센터로, 서울 리전에는 4개가 있다. 장애에 대비해 AZ를 분산 설계한다.
  • 웹 서비스에 필요한 핵심 5종: 컴퓨팅(EC2), 스토리지(S3/EFS/EBS), 데이터베이스(RDS/Aurora/DynamoDB), 네트워킹, 보안/자격증명(IAM).
  • 과금은 Pay-Per-Use(시간·사용량 비례)이고, 신규 가입 시 12개월 프리 티어가 제공돼 실습은 대부분 무료로 가능하다.
  • 책임 공유 모델: 하드웨어와 글로벌 인프라는 AWS가, 클라우드 의 소프트웨어·설정·데이터는 사용자가 책임진다.

AWS와 사용자 간의 책임 공유 범위 AWS의 책임 범위와 온프레미스에서의 책임 범위 비교.

AWS 계정 생성은 신용카드 등록과 과금이 따르는 1회성 절차라, 이메일 확인 → 암호 → 연락처 → 결제정보(100원 임시승인 후 취소) → 전화 인증 → 기본 지원(무료) 선택 순으로 진행된다.

가입한 계정으로 접근이 되는지, 그리고 “서울 리전 + 4개 가용 영역”이 맞는지 CLI로 확인했다.

1
2
3
4
5
6
7
8
9
$ aws sts get-caller-identity                         # 내 계정/사용자 확인
{
  "Account": "9337****0266",
  "Arn": "arn:aws:iam::9337****0266:user/admin"
}

$ aws ec2 describe-availability-zones --region ap-northeast-2 \
    --query "AvailabilityZones[].ZoneName" --output text
ap-northeast-2a   ap-northeast-2b   ap-northeast-2c   ap-northeast-2d   # 서울 리전 = 4개 AZ

강의에서 다룬 “서울 리전과 네 개의 가용 영역”이 API 응답으로도 동일하게 확인된다.

가상머신과 리눅스 기초

우분투 설치 (강의 기준)

강의에서는 VMware Workstation PlayerUbuntu 게스트 OS를 올리는 방식으로 진행한다.

가상머신의 호스트 OS 게스트 OS 개념 호스트 OS·게스트 OS·가상머신의 관계를 설명하는 장면.

설치 절차를 요약하면 이렇다.

  1. vmware.com 에서 Workstation Player를 받아 설치.
  2. Create a New Virtual Machine → “I will install the OS later”(빈 디스크) → Guest OS = Linux.
  3. 디스크 20GB, Split into multiple files.
  4. ubuntu.com 에서 ISO를 받아 VM의 CD/DVD를 Use ISO image file 로 지정 → 전원 ON.
  5. 언어=한국어 → 키보드=Korean → 최소 설치 → “디스크 지우고 Ubuntu 설치” → 시간대=Seoul → 사용자 user1/컴퓨터명 myubuntu 로 설치.

Windows PC에서는 VMware GUI 설치를 통째로 재현하는 대신, 같은 우분투 환경을 컨테이너(ubuntu:22.04)로 띄워 리눅스 기초 명령을 실행했다. 사용자명·호스트명도 강의와 동일하게 user1/myubuntu 로 맞췄다.

1
2
3
4
5
$ docker run -dit --name myubuntu --hostname myubuntu ubuntu:22.04 bash
0663fe6d0ee9688c7c3501d5469030f0423d7e2fb0ac19c3a5c567c1eae6d739

$ docker ps --filter name=myubuntu --format '{{.Names}}  {{.Image}}  {{.Status}}'
myubuntu  ubuntu:22.04  Up Less than a second

명령의 구조 — 명령 [옵션] [인자]

강의에서 제시한 네 가지 형태를 비교해 봤다. (홈에 강의와 같은 공개/다운로드/문서/… 디렉터리를 만들어 둔 상태)

① 명령만 / ② 명령 + 옵션(-a) — 숨김 파일(.bashrc, .profile)이 함께 보인다.

1
2
3
4
5
6
$ ls
공개  다운로드  문서  바탕화면  비디오  사진  음악  템플릿

$ ls -a
.   .bashrc   공개      문서        비디오  음악
..  .profile  다운로드  바탕화면    사진    템플릿

③ 명령 + 인자(/tmp) / ④ 명령 + 옵션 + 인자(-a /tmp)

1
2
3
4
$ ls /tmp        # (비어 있음)

$ ls -a /tmp
.  ..

기초 명령 — date, uname, passwd

date — 날짜·시간 출력. 한국어 로캘로 실행하면 강의 화면과 같은 형식이 나온다.

1
2
3
4
5
$ date
Tue Mar 17 21:32:14 UTC 2026

$ LC_ALL=ko_KR.UTF-8 date
2026. 03. 17. () 21:32:14 UTC

uname -a / whoami / hostname — 시스템·계정 확인.

1
2
3
4
5
6
$ uname -a
Linux myubuntu 6.18.33.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux
$ whoami
root
$ hostname
myubuntu

passwd — 사용자 비밀번호 변경. 강의와 같이 user1 계정을 만들고 암호를 설정했다.

1
2
3
4
5
6
$ useradd -m -s /bin/bash user1
$ passwd user1
passwd: 암호를 성공적으로 업데이트했습니다 (user1)

$ grep user1 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash

man — 명령 사용법. 최소화된 컨테이너 이미지에는 man 페이지가 빠져 있어, 같은 목적의 --help 로 구조를 확인했다.

1
2
3
4
5
6
$ date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.
  -d, --date=STRING          display time described by STRING, not 'now'
  ...

ubuntu:22.04 컨테이너는 “minimized” 상태라 manpage가 빠져 있다(man man 실행 시 This system has been minimized… 안내가 뜬다). 그래서 --help 로 대체했는데, 실제 VM 우분투 데스크톱에는 manpage가 기본으로 들어 있다.

정리

클라우드의 핵심은 “누가 어디까지 관리하느냐”(책임 범위)“쓴 만큼 낸다”(과금 모델) 두 축으로 정리된다. IaaS/PaaS/SaaS 구분도 이 축으로 설명된다. 리눅스 기초 명령(명령 [옵션] [인자] 구조, date/uname/passwd/man)은 이후 컨테이너 실습의 바탕이 되는 부분이다.

This post is licensed under CC BY 4.0 by the author.