1. 클라우드 컴퓨팅 서비스의 이해 (1주차)
1.1 클라우드 컴퓨팅이란?
인터넷을 통해 컴퓨팅 서비스(가상 머신, 스토리지, 데이터베이스, 네트워킹 등)를 제공하는 방식입니다. 기존 데이터 센터와 달리 물리적 인프라에 제한되지 않고 IT 인프라를 신속하게 확장할 수 있는 것이 특징입니다.
- 주요 특징:
- 획기적인 기능의 빠른 개발 가능
- 리소스의 유동적 사용 및 요금 절감
- IoT, ML, AI 등 기존 IT 제품의 확장
1.2 클라우드 서비스 모델 비교 (IaaS, PaaS, SaaS)
강의 자료의 핵심인 서비스 모델별 관리 범위와 특징을 정리합니다.
| 모델 | 설명 | 특징 |
|---|
| IaaS | 인프라 대여 (Infrastructure) | 사용자가 OS, 데이터, 애플리케이션 등 가장 많은 부분을 관리 (예: Azure VM) |
| PaaS | 플랫폼 대여 (Platform) | 개발자는 코드와 데이터에만 집중. 인프라 관리는 클라우드 업체가 담당 |
| SaaS | 소프트웨어 대여 (Software) | 완성된 소프트웨어를 사용자가 구독하여 이용 (예: Office 365) |
요약: 서비스의 종류와 장단점이 분명하므로, 프로젝트의 목적에 따라 적절한 서비스를 선택하는 것이 중요합니다.
2. Azure 리소스 및 가상 머신(VM) 관리
2.1 Azure 리소스 (Resources)
클라우드 솔루션을 빌드하는 데 사용하는 구성 요소입니다.
- 대표 리소스: 가상 머신(Virtual Machines), 스토리지 계정, 가상 네트워크 등.
2.2 리소스 그룹 (Resource Group)
- Azure 리소스를 논리적으로 묶어 관리하는 컨테이너입니다.
- 특징: 모든 리소스는 반드시 하나의 리소스 그룹에 속해야 하며, 그룹 단위로 배포 및 관리가 이루어집니다. 실습 시 리소스 그룹을 삭제하면 내부의 모든 리소스가 한꺼번에 삭제되어 관리가 편리합니다.
3. 리눅스(Linux) 운영체제 기초 (2주차)
3.1 유니스(Unix)와 리눅스(Linux)의 유래
- Unix: 1970년대 초 AT&T 벨 연구소(데니스 리치 등)에서 개발된 다중 사용자 운영체제입니다.
- Linux: 1991년 리누스 토르발스(Linus Torvalds)가 PC용으로 개발한 오픈 소스 커널입니다. 서버, 데스크톱, 임베디드 등 다양한 환경에서 사용됩니다.
3.2 리눅스 핵심 명령어 실습
터미널 환경에서 시스템을 제어하기 위해 학습한 필수 명령어들입니다.
- 시스템 확인:
date(시간), hostname(이름), uname -a(시스템 정보)
- 파일/디렉토리:
ls -al: 파일 목록 상세 확인
cd: 경로 이동
mkdir: 디렉토리 생성
pwd: 현재 작업 경로 확인
rm: 파일 삭제
3.3 vi 편집기 사용법
리눅스에서 파일을 편집하기 위한 필수 도구로, 세 가지 모드를 익혔습니다.
1. 명령 모드: 커서 이동 및 삭제
2. 입력 모드: i를 눌러 텍스트 입력 시작
3. 마지막 행 모드: :를 눌러 저장(w) 및 종료(q)
4. 플랫폼 서비스 기반의 웹 서버 구축 (Streamlit)
4.1 Streamlit의 정의 및 주요 특징
Python 개발자가 웹 애플리케이션을 쉽고 빠르게 만들 수 있게 도와주는 오픈소스 프레임워크입니다.
- 간편한 사용성: HTML, CSS, JS 지식 없이 오직 Python으로만 개발.
- 빠른 프로토타이핑: 코드 변경 시 실시간으로 앱 업데이트.
- 다양한 위젯: 슬라이더, 드롭다운, 체크박스 등 인터랙티브 요소 지원.
- 데이터 시각화: Matplotlib, Plotly 등 다양한 라이브러리와 통합.
4.2 실습 환경 구축 및 배포
- Azure VM 배포: Ubuntu 리눅스 환경의 가상 머신을 생성하고 접속합니다.
- 네트워크 설정(NSG):
- 외부에서 웹 사이트에 접속하려면 네트워크 보안 그룹(NSG) 설정이 핵심입니다.
- 인바운드 보안 규칙에서 Streamlit의 포트(예: 8501)를 허용해주어야 합니다.
5. 학습 소감 및 결론
1주차에는 클라우드의 서비스 모델(IaaS/PaaS/SaaS)과 Azure 리소스 관리의 기초를 배웠고, 2주차에는 리눅스 환경에서 실제로 VM을 운영하고 Streamlit을 통해 웹 서비스를 배포하는 실습을 진행했습니다.
특히, 리소스 그룹을 활용한 효율적인 자원 관리와 리눅스 CLI 환경에서의 명령어 숙달이 클라우드 개발의 기초임을 깨달았습니다.