가상화 (Virtualization)
- 정의: 하나의 컴퓨터에서 여러 OS 실행, 자원 분할/통합 가능.
- 장점: 확장성, 유연성, 비용 절감.
- 단점: 성능 저하 가능성.
가상화 종류
- 호스트 기반 가상화: 기존 OS 위에 가상화 소프트웨어 (Virtual Box, Vmware workstation) 등을 설치하고 그 위에서 게스트 OS를 실행하는 방식으로 성능 오버헤드가 크고 호스트 OS가 죽으면 게스트 OS도 같이 중단된다.
- 하이퍼바이저 기반 가상화: VMware ESXi, Hyper-V, KVM 등. 물리 서버 위에 하이퍼바이저라는 전용 가상화 계층이 직접 올라가고 그 위에 여러 게스트 OS를 실행한다. 안정성이 높다.
- 컨테이너 기반 가상화: Docker, containerd, CRI-O 등 OS 자체는 공유하고 애플리케이션과 그 실행 환경을 컨테이너 단위로 격리 실행하는 방식으로 OS 전체를 복사하지 않아 리소스 효율을 극대화 할 수 있다.
대표 소프트웨어
- VirtualBox, VMware, Parallels, Hyper-V, QEMU/KVM, Proxmox, Xen 등.
컨테이너 (Containers)
- 도구: Docker, containerd, CRI-O.
- 오케스트레이션: 많은 컨테이너를 자동으로 관리,운영하는 기술로 주요 기능은 다음과 같다.
- 자동 배포(Deployment) : 애플리케이션을 여러 컨테이너로 배포하고 업데이트를 점진적으로 수행
- 스케일링( Scaling) : 트래픽이 많으면 컨테이너 개수 자동 증가
- 로드 밸런싱(Load balancing) : 여러 컨테이너에 트래픽을 균등 분산
- 장애 복구(Self healing) : 죽은 컨테이너를 자동으로 재시작,배치
- 서비스 디스커버리,네트워킹 : 컨테이너 간 통신을 자동으로 설정
- 대표적인 도구: Kubernetes(K8s), OpenShift, Docker Swarm.
- 특징: 경량화, 빠른 배포, 이식성.
전통 IT vs 클라우드
- 전통 IT: HW/SW 구매, 설치, 관리 필요.
- 클라우드:
- 셀프 서비스(Self-Service): 몇 분 안에 자원 할당 가능, 자동 확장.
- 사용량 기반 과금(Pay-per-Use): 사용한 만큼만 비용 지불.
클라우드 모델 - 서비스 기준
- IaaS: 인프라 제공 (AWS EC2, GCP Compute Engine).
- PaaS: 앱 실행 환경 제공 (Google App Engine, Heroku).
- SaaS: 소프트웨어 서비스 제공 (Gmail, Office 365).
클라우드 모델 - 배포 기준
- 퍼블릭 클라우드: AWS, Azure, GCP.
- 프라이빗 클라우드: 조직 전용.
- 하이브리드 클라우드: 공용+전용 혼합.
- 멀티 클라우드: 여러 클라우드 동시 사용.
클라우드 핵심 특성
- 온디맨드(Self-Service).
- 광범위한 네트워크 접근성.
- 리소스 풀링.
- 신속한 확장성.
- 사용량 측정 가능.
9. 아키텍처 (Architecture)
- 정의: 시스템 구성과 상호작용을 정의하는 설계도.
- 종류:
- Enterprise Architecture (엔터프라이즈 아키텍처)
- 기업 전체의 비즈니스 전략과 IT 전략을 연결.
- 장기적 목표와 자원 배분을 최적화.
- Software Architecture (소프트웨어 아키텍처)
- 소프트웨어 시스템의 구조, 모듈, 인터페이스 설계.
- 성능·보안·확장성 보장.
- System Architecture (시스템 아키텍처)
- 복잡한 시스템의 구성 요소와 상호작용 정의.
- 하드웨어/소프트웨어 통합 설계.
- Application Architecture (애플리케이션 아키텍처)
- 특정 애플리케이션의 계층 구조와 흐름 정의.
- 예: MVC 패턴, 3-tier 구조.
- Cloud Architecture (클라우드 아키텍처)
- 클라우드 환경에 최적화된 시스템 설계.
- IaaS/PaaS/SaaS, 오토스케일링, 오케스트레이션 포함.
- Data Architecture (데이터 아키텍처)
- 데이터 수집·저장·관리·흐름 구조 정의.
- 데이터베이스, 데이터 웨어하우스, 데이터 레이크 설계.
- Network Architecture (네트워크 아키텍처)
- 네트워크 구성, 프로토콜, 라우팅 설계.
- 클라우드/온프레미스 네트워크 설계 포함.
- Information Architecture (정보 아키텍처)
- 정보의 구조화·분류·탐색 방법 설계.
- UX 설계, 검색 시스템, 웹사이트 구조 등에 활용.
- Solution Architecture (솔루션 아키텍처)
- 특정 비즈니스 요구사항을 해결하는 기술 솔루션 설계.
- 예: 전자상거래 시스템, IoT 플랫폼.
- Infrastructure Architecture (인프라스트럭처 아키텍처)
- IT 인프라(서버, 스토리지, 네트워크, 데이터센터) 설계.
- 안정성, 확장성, 가용성을 보장하는 기반 구조.
- Enterprise Architecture (엔터프라이즈 아키텍처)
인프라스트럭처 아키텍처 (Infrastructure Architecture)
- 구성 요소: 하드웨어, 소프트웨어, 네트워크, 데이터센터, 가상화/컨테이너.
- 목표: 안정성, 가용성, 확장성 보장.
구성 방법
- 모놀리식 아키텍처 (Monolithic Architecture)
- 모든 기능이 하나의 코드베이스·시스템에 통합.
- 장점: 단순, 배포 용이.
- 단점: 변경 시 전체에 영향 → 확장성 낮음.
- 마이크로서비스 아키텍처 (Microservices Architecture)
- 애플리케이션을 작은 독립 서비스 단위로 분리.
- 각 서비스가 독립적으로 개발·배포·스케일링 가능.
- 서비스 지향 아키텍처 (SOA, Service-Oriented Architecture)
- 여러 서비스를 모아 애플리케이션 구성.
- 표준화된 프로토콜로 통신 (예: SOAP, REST).
- 이벤트 기반 아키텍처 (Event-Driven Architecture, EDA)
- 이벤트 발생 → 감지 → 처리 → 반응 중심.
- 실시간 시스템, IoT, 금융 거래 시스템에 적합.
- 레이어드 아키텍처 (Layered / N-tier Architecture)
- 계층(프레젠테이션, 비즈니스, 데이터 등)으로 구분.
- 각 계층은 바로 위/아래 계층과만 통신.
- 가상화 (Virtualization)
- 물리 서버를 VM으로 추상화.
- 자원 활용도↑, 관리 용이.
- 컨테이너라이제이션 (Containerization)
- 애플리케이션과 의존성을 컨테이너에 패키징.
- 이식성과 확장성 강화.
- 서버리스 아키텍처 (Serverless Architecture)
- 서버 관리 없이 코드 실행.
- 예: AWS Lambda, Google Cloud Functions.
- 하이브리드 아키텍처 (Hybrid Architecture)
- 온프레미스 + 클라우드 혼합.
- 민감 데이터는 내부, 나머지는 클라우드.
- 분산 아키텍처 (Distributed Architecture)
- 여러 위치에 분산된 컴포넌트들이 하나의 시스템처럼 동작.
- 장애 내성·확장성 높음.
레이어드 아키텍처 (Layered Architecture)
- 애플리케이션을 계층으로 분리 (프레젠테이션, 비즈니스, 데이터).
- 계층 간 독립성 보장.
예시: 3-Tier (MERN Stack)
- Presentation Tier: 사용자 인터페이스 (웹/앱).
- Application Tier: 비즈니스 로직.
- Data Tier: 데이터베이스.
- 수평 확장/수직 확장 가능.

