클라우드 컴퓨팅 개념 정리
0. 용어정리
항목 | 설명 |
---|
Instance | 개별 실행 단위(물리적 실행 단위), “카테고리 같은 느낌” |
Service | 특정 기능을 수행하는 것을 의미하며 개념적 표현 |
Application | Service 보다 큰 의미, 특정 목적을 수행하는 소프트웨어 프로그램 (다수의 인스턴스와 서비스 포함) |
1. 클라우드 컴퓨팅이란?
클라우드 컴퓨팅(Cloud Computing)은 인터넷을 통해 컴퓨팅 자원을 제공하는 기술이다. 데이터 저장, 서버 운영, 네트워크 관리, 소프트웨어 실행 등의 IT 인프라를 직접 구축하지 않고 클라우드 서비스 제공자로부터 빌려서 사용하는 방식이다.
2. 클라우드 컴퓨팅의 주요 특징
- 온디맨드(On-Demand): 필요할 때 즉시 자원을 할당하고 사용할 수 있음.
- 확장성(Scalability): 수요에 따라 컴퓨팅 자원을 자동으로 확장 및 축소 가능.
- 비용 절감(Cost Efficiency): 사용한 만큼만 비용을 지불하며, 초기 인프라 구축 비용 절감.
- 장애 대응력(Fault Tolerance): 장애 발생 시 자동 복구 기능을 제공하여 무중단 서비스 가능.
=> 장애를 기능으로 전환!(복구를 기능 명시적)
- 인터넷 접근성: 어디서든 인터넷을 통해 클라우드 자원에 접근 가능.
클라우드 아키텍처 속성
- 확장성 : 요청이나 상황에 따라 it 인프라 자원의 유기적인 확장/축소가 가능함
=> 수평확장, 수직확장
- 탄력성 : 수요에 따라 자동으로 자원을 확장하거나 축소 가능함.
- 내결함성 : 서비스와 it 인프라의 장애를 분리하여 it 인프라 장애에도 무중단 서비스를 지원함
=> 자동 복구 매커니즘
- 민첩성 : 새로운 기술을 빠르게 도입하여 비즈니스 혁신에 기여할 수 있다.
Gateway, Router, Load Balancer 개념
구성 요소 | 설명 |
---|
Gateway | 관문 역할을 하며, 데이터를 한 시스템에서 다른 시스템으로 전달할 때 표현을 변환합니다. 예: A → B로 들어갈 때 데이터 형식을 바꿈. |
Router | 네트워크의 길을 확장하거나 데이터를 올바른 경로로 전달하기 위해 사용됩니다. 주로 하드웨어 장치로 구현됩니다. |
Load Balancer (LB) | 요청 트래픽을 여러 노드(서버)로 분배하여 부하를 분산시키는 역할을 합니다. 이는 시스템 성능과 안정성을 향상시킵니다. |
ELB (Elastic Load Balancer)
- AWS와 같은 클라우드 환경에서 제공하는 탄력적인 로드 밸런서입니다. 트래픽 부하를 자동으로 조정하며, 확장성과 가용성을 보장합니다.
쿠버네티스와 관련된 개념
-
Process (프로세스)
- 컴퓨팅 환경 내에서 실행 중인 프로그램의 단위입니다.
- 예를 들어, 게임이 실행되면 하나의 프로세스로 간주됩니다.
-
Thread (쓰레드)
- 프로세스 내부에서 실행되는 작업의 단위입니다.
- 멀티코어 CPU 환경에서는 여러 쓰레드를 동시에 실행할 수 있어 병렬 처리가 가능합니다.
-
CPU 메모리와의 관계
- 프로세스와 쓰레드는 CPU와 메모리를 사용하여 작업을 수행합니다.
- 쓰레드는 프로세스의 자원을 공유하며, 효율적인 작업 처리를 위해 사용됩니다.
Port (포트)
- 서버의 IP 주소를 구분하기 위해 사용하는 고유한 번호입니다.
- 포트를 통해 동일한 IP에서 여러 서비스가 동작할 수 있습니다.
- 예: 웹 서버(포트 80), 데이터베이스 서버(포트 3306).
포트는 반드시 고유해야 하며, 충돌이 발생하지 않도록 관리해야 합니다.
요약
위 개념들은 네트워크 및 컴퓨팅 환경에서 중요한 역할을 하며, 시스템 간 데이터 전달(Gateway), 네트워크 확장(Router), 부하 분산(Load Balancer), 그리고 실행 단위(Process/Thread) 및 포트 관리가 효율적인 시스템 설계와 운영에 필수적입니다.
3. 클라우드 서비스 모델
1) IaaS (Infrastructure as a Service)
- 서버, 스토리지, 네트워크 등 IT 인프라를 가상화하여 제공하는 서비스.
- 사용자는 OS 및 애플리케이션을 직접 관리해야 함.
- 예시: AWS EC2, Microsoft Azure, Google Compute Engine
=> 높은 유연성과 확장성
- 애플리케이션 개발을 위한 플랫폼을 제공하는 서비스.
- 개발자는 인프라 관리 없이 애플리케이션을 개발하고 배포 가능.
- 예시: AWS Elastic Beanstalk, Google App Engine, Heroku
=> 개발 효용성, 서버 관리 불필요
3) SaaS (Software as a Service)
- 완전한 소프트웨어를 클라우드에서 제공하며, 사용자는 별도의 설치 없이 웹에서 사용 가능.
- 예시: Google Drive, Dropbox, Microsoft 365
=> 즉시 사용 가능하며 유지보수가 불필요함
4. 클라우드 배포 모델
1) 퍼블릭 클라우드 (Public Cloud)
- 다수의 사용자가 공유하는 클라우드 환경.
- 예시: AWS, Google Cloud, Microsoft Azure
2) 프라이빗 클라우드 (Private Cloud)
- 특정 조직을 위한 전용 클라우드로 보안성이 높음.
3) 하이브리드 클라우드 (Hybrid Cloud)
- 퍼블릭과 프라이빗 클라우드를 혼합하여 사용하는 방식.
4) 멀티 클라우드 (Multi Cloud)
- 여러 클라우드 서비스를 조합하여 활용하는 방식으로 특정 클라우드 종속성을 줄일 수 있음.
5. 클라우드 인프라 구성 요소
1) 인스턴스(Instance)
- 개별 실행 단위로 가상 머신 또는 컨테이너로 구현됨.
2) 노드(Node)
- 인스턴스와 유사하지만 물리적으로 명확히 구분되는 실행 단위.
3) 클러스터(Cluster)
- 여러 개의 노드가 모여 하나의 시스템처럼 동작하는 구조.
4) 게이트웨이(Gateway)
- 내부 네트워크와 외부 네트워크 간의 데이터 흐름을 제어하는 관문 역할.
(표현을 바꾸어 줌)
5) 로드 밸런서(Load Balancer)
- 부하를 여러 서버에 분산하여 안정성을 높이는 역할.
6) Router
- 길을 확장할 때 사용, 네트워크를 연결하며 확장함
7) 컨테이너(Container)와 오케스트레이션
- 컨테이너: 애플리케이션 실행 단위로, 환경에 관계없이 동일하게 실행됨.
- 쿠버네티스(Kubernetes): 컨테이너의 자동 배포, 확장, 운영을 관리하는 도구.
클러스터와 노드의 차이
Node는 Instance와 비슷하게명시적으로 분리되어 있는 하나의 단위 표현이며,
클러스터는 여러 개의 노드를 포함하게 된다
=> 클러스는 물리적으로 존재하게 됨
Process와 Thread
- Process는 컴퓨팅 환경 내에서 실행할 때 (= 게임)
- Thread는 하나의 단위로 코어에 맞춰 실행됨 (각각의 액션)
6. 클라우드 보안과 네트워크 구성
1) VPC (Virtual Private Cloud)
- 사용자가 직접 네트워크를 구성할 수 있는 가상 네트워크 환경.
2) 서브넷(Subnet)
- VPC 내에서 특정 네트워크를 논리적으로 분리한 것 (Public/Private Subnet).
3) 인터넷 게이트웨이(Internet Gateway)
- 퍼블릭 서브넷과 인터넷 간 양방향 통신을 가능하게 하는 장치.
4) NAT 게이트웨이(NAT Gateway)
- 프라이빗 서브넷에서 외부 인터넷으로 접속할 수 있도록 지원하는 서비스.
5) 보안 그룹(Security Group)
- 특정 인스턴스에 대한 네트워크 접근을 제어하는 가상 방화벽 역할.
=> 인스턴스 별로 가상 방화벽을 설정
=> 인바운드/아웃바운드 규칙을 통해 설정
6) 네트워크 ACL (NACL: Network Access Control List)
- 서브넷 단위에서 트래픽을 제어하며, 보안 그룹보다 포괄적인 접근 통제를 수행.
=> 허용과 거부 규칙 모두 지정 가능하며, 규칙 번호에 순서대로 하나씩 평가
제일 먼저 네트워크 ACL을 통해 필터링되고, 개별적인 보안그룹을 통과함
내부망, 외부망, 고립망
-
내부망 : 보안이 강화된 서비스로 데이터를 보호하기 위하여 고립됨
제한적으로 인터넷에 연결될 수 있으며, 내부 업무 환경을 지원함
-
외부망 : 사용자 접근 및 인터넷 연결을 위한 공간으로 외부와 소통함
-
고립망 : 완전히 차단되어 외부로부터 완벽한 보안이 유지됨
CIDR (Classes Inter-Domain Routing)
Subnet을 Masking하기 위한 방식으로 Networt Portion을 추출하기 위한 표기법
=> 네트워크 주소를 효율적으로 할당하고 라우팅하기 위한 방법
(포트는 Process의 식별번호)
라우팅 테이블
기본적으로 같은 VPC 내에서는 자동으로 라우팅되지만, 외부 네트워크와 통신하려면 Routing Table이 필요함.
7. 클라우드 특성과 아키텍처 이해
선언적 VS 명령적
- 선언적 : 요청에 대해서 자발적으로 처리하며 관리자는 보고 받기만 함
- 명령적 : 업무를 지시하거 계속해서 지켜보면서 조율해야 함
MSA : 마이크로 서비스 아키텍처
- Monolith : 하나의 프로세스 안에 여러 서비스가 존재(예전의 방식)
-> 모니터링하기 쉽지 않음
- 마이크로 서비스 : 서비스를 분리하여 작은 단위로 쪼개짐
-> 솬리, 확장, 개선이 쉬움
=> 마이크로 서비스의 형태가 항상 적합한 것은 아니다. 구체적인 목적을 가지고 빠르게 구축해야 하는 경우 Monolith가 더 적합할 수 있다!
8. 클라우드 트렌드 및 미래 전망
- 엣지 컴퓨팅(Edge Computing) 확산: 중앙 데이터 센터가 아닌 네트워크 가장자리에서 데이터 처리.
- AI와 클라우드 융합: 인공지능과 머신러닝이 클라우드 환경에서 더욱 활발하게 활용됨.
- 서버리스(Serverless) 컴퓨팅 증가: 개발자가 서버 관리를 신경 쓰지 않고 코드 실행 가능.
- 멀티 클라우드 전략 강화: 특정 클라우드 제공업체에 대한 종속성을 줄이고 다양한 클라우드 활용.
- 클라우드 네이티브(Cloud-Native) 기술 성장: 컨테이너 기반 개발 방식 증가.
클라우드는 IT 인프라의 핵심 기술로 자리 잡았으며, 기업과 개인 모두에게 필수적인 요소가 되고 있다. 앞으로의 발전 방향을 주시하면서 지속적으로 학습하는 것이 중요하다.