클라우드프로그래밍 1주차 — 클라우드 컴퓨팅과 AWS, 리눅스 기초
클라우드 컴퓨팅의 기본 개념과 AWS 서비스 구성을 정리하고, 리눅스 기초 명령을 우분투 컨테이너에서 다뤄 본 1주차 기록.
클라우드프로그래밍 1주차는 세 가지를 다뤘다. 클라우드 컴퓨팅 개념, AWS 서비스 구성, 그리고 가상머신에 리눅스를 올려 기초 명령을 다루는 것. 개념을 정리하고, 리눅스 기초 명령은 직접 실행한 결과를 함께 정리한다.
클라우드 컴퓨팅이란
온프레미스에서 클라우드로
- 온프레미스(on-premises):
on+premise(건물/토지). 사용자가 자체 공간과 자원으로 직접 구축·운영하는 전통적인 방식이다. 모든 걸 직접 챙겨야 해서 부담과 비용이 크다. - 클라우드(cloud): 인터넷 어딘가에 “구름처럼” 모여 있는 IT 자원의 집합. 온프레미스의 한계를 보완한다.
- 클라우드 컴퓨팅: 인터넷을 통해 온디맨드(on-demand) 로 IT 자원을 제공하고, 사용한 만큼만 비용(Pay-Per-Use) 을 내는 서비스다.
클라우드 컴퓨팅의 세 가지 이점
- 민첩성 — 컴퓨팅·스토리지·DB부터 IoT·머신러닝·빅데이터까지 폭넓은 기술을 빠르게 가져다 쓸 수 있다.
- 탄력성 — 미리 과하게 구성해 둘 필요 없이, 필요한 만큼 할당받아 늘리고 줄인다.
- 비용 절감 — 데이터센터를 직접 짓는 비용에 비하면 사용량 기반 과금이 유리하다.
서비스 유형 (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 계정 생성은 신용카드 등록과 과금이 따르는 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 Player 에 Ubuntu 게스트 OS를 올리는 방식으로 진행한다.
호스트 OS·게스트 OS·가상머신의 관계를 설명하는 장면.
설치 절차를 요약하면 이렇다.
vmware.com에서 Workstation Player를 받아 설치.- Create a New Virtual Machine → “I will install the OS later”(빈 디스크) → Guest OS = Linux.
- 디스크 20GB, Split into multiple files.
ubuntu.com에서 ISO를 받아 VM의 CD/DVD를 Use ISO image file 로 지정 → 전원 ON.- 언어=한국어 → 키보드=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)은 이후 컨테이너 실습의 바탕이 되는 부분이다.