1. IT 인프라 배포 패러다임의 변화
과거에는 기업이 자체적으로 모든 IT 인프라를 구축하고 관리하는 것이 일반적이었습니다. 하지만 기술의 발전과 비즈니스 요구사항의 변화에 따라 다양한 배포 패러다임이 등장했습니다.
1.1. 전통적인 온프레미스 (On-Premise)
정의: 조직이 자체 시설 또는 데이터 센터 내에 직접 IT 인프라
(서버, 스토리지, 네트워크 장비 등)를 소유하고 관리하는 방식입니다.
장점:
- 완전한 제어권: 모든 인프라를 기업이 직접 소유하고 관리하므로, 보안, 성능, 데이터 제어에 대한 완전한 통제권을 가집니다.
- 민감한 데이터 처리: 규제 준수나 보안상의 이유로 민감한 데이터를 외부로 옮길 수 없을 때 적합합니다.
단점:
- 높은 초기 투자 비용: 하드웨어, 소프트웨어 구매 및 데이터 센터 구축에 막대한 초기 비용이 발생합니다.
- 지속적인 유지보수 및 운영 비용: 전문 인력 고용, 전력, 냉각, 물리적 보안 등 지속적인 유지보수 및 운영 비용이 발생합니다.
- 확장성의 제약: 비즈니스 성장에 따라 자원을 확장하려면 추가적인 하드웨어 구매 및 설치가 필요하여 시간과 비용이 많이 듭니다.
- 과잉/부족 프로비저닝 위험: 필요한 자원을 정확히 예측하기 어려워 자원이 과도하게 할당되거나 부족하게 할당될 위험이 있습니다.
1.2. 클라우드 컴퓨팅 (Cloud Computing)
정의: IT 리소스를 제3의 공급업체(예: AWS, Azure, GCP)가 인터넷을 통해 서비스 형태로 제공하는 모델입니다. 사용자는 필요한 만큼의 자원을 빌려 쓰고, 사용한 만큼만 비용을 지불합니다.
클라우드 서비스 모델:
- IaaS (Infrastructure as a Service): 가상화된 컴퓨팅 리소스(가상 머신, 스토리지, 네트워크)를 인터넷을 통해 제공받아 사용합니다. 사용자는 운영체제와 애플리케이션을 직접 설치하고 관리합니다. (예: AWS EC2, S3)
- PaaS (Platform as a Service): 애플리케이션 개발, 실행, 관리에 필요한 플랫폼(운영체제, 데이터베이스, 웹 서버, 개발 도구 등)을 제공합니다. 사용자는 인프라 구성 및 유지보수의 복잡성 없이 서비스 개발에 집중할 수 있습니다. (예: AWS Elastic Beanstalk, Heroku)
- SaaS (Software as a Service): 소프트웨어가 중앙에서 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 사용하는 소프트웨어 전달 모델입니다. 사용자는 소프트웨어를 설치하거나 관리할 필요 없이 즉시 사용할 수 있습니다. (예: Gmail, Salesforce, Dropbox)
장점:
- 낮은 초기 비용: 하드웨어 구매 없이 구독 기반으로 비용을 지불하므로 초기 투자 비용이 거의 없습니다.
- Pay-as-you-go: 사용한 만큼만 비용을 지불하여 비용 효율적입니다.
뛰어난 확장성 및 유연성: 필요에 따라 컴퓨팅 자원을 즉시 확장하거나 축소할 수 있어 비즈니스 변화에 민첩하게 대응할 수 있습니다.
- 유지보수 부담 감소: 인프라 유지보수는 클라우드 서비스 제공업체가 담당하므로 기업의 IT 운영 부담이 줄어듭니다.
- 높은 가용성 및 재해 복구: 클라우드 제공업체가 분산된 데이터 센터와 다양한 재해 복구 옵션을 제공하여 높은 가용성과 안정성을 보장합니다.
1.3. 하이브리드 IT 인프라 (Hybrid IT Infrastructure)
정의: 전통적인 온프레미스 인프라와 클라우드 인프라가 결합된 형태입니다.
장점:
- 두 가지 모델의 장점 활용: 클라우드의 확장성과 유연성을 활용하면서 민감한 데이터나 핵심 운영 시스템은 온프레미스에서 유지할 수 있습니다.
- 데이터 주권 및 보안: 규제 준수나 보안상의 이유로 중요한 데이터는 온프레미스에 보관하고, 워크로드의 변동성이 큰 서비스는 클라우드에서 운영하여 효율성을 높일 수 있습니다.
- 점진적인 클라우드 전환: 기존 온프레미스 시스템을 한 번에 클라우드로 이전하기 어려운 경우, 단계적으로 하이브리드 환경을 구축하며 전환할 수 있습니다.
1.4. 온프레미스 vs 클라우드 인프라 비교 요약

2. AWS 3계층 아키텍처
클라우드 환경에서 안정적이고 효율적인 애플리케이션을 구축하기 위해서는 적절한 아키텍처 설계가 매우 중요합니다.
AWS는 이를 위해 몇 가지 핵심 원칙과 3계층 아키텍처를 권장합니다.
2.1. 기본적인 AWS 아키텍처 원칙
AWS 환경에서 효과적인 IT 인프라를 설계하고 운영하기 위해서는 다음 핵심 원칙들을 고려해야 합니다.
- 확장성 (Scalability): 트래픽 증가나 비즈니스 성장에 따라 시스템이 원활하게 확장될 수 있도록 설계해야 합니다. (수평적/수직적 확장)
- 복원력 및 고가용성 (Resilience & High Availability): 장애 발생 시에도 서비스 중단 없이 지속적으로 운영될 수 있도록 설계해야 합니다.
(다중 AZ, 자동 복구, 로드 밸런싱 등)
- 보안 (Security): 데이터와 시스템을 외부 위협으로부터 보호하고, 규제 준수를 만족하도록 강력한 보안을 적용해야 합니다.
(IAM, VPC, Security Group, KMS 등)
- 비용 최적화 (Cost Optimization): 불필요한 비용 낭비를 줄이고 효율적으로 자원을 사용하여 비용을 최적화해야 합니다.
(적절한 인스턴스 타입 선택, 오토 스케일링, 예약 인스턴스 등)
- 분리 (Decoupling): 각 구성 요소를 독립적으로 설계하여 시스템의 유연성과 유지 보수성을 높여야 합니다.
2.2. AWS 3계층 아키텍처 (3-Tier Architecture)
3계층 아키텍처는 애플리케이션을 세 개의 논리적이고 물리적인 컴퓨팅 계층으로 구성하는 확립된 소프트웨어 애플리케이션 아키텍처입니다. 각 계층은 특정 역할과 책임을 가지며, 독립적으로 운영되면서 서로 통신합니다.
AWS 환경에서의 일반적인 구성
- Virtual Private Cloud (VPC): AWS 클라우드 내에 사용자의 격리된 네트워크 환경을 구축합니다.
- Subnet: VPC 내에서 IP 주소 범위에 따라 네트워크를 세분화합니다.
3계층 아키텍처에서는 Public Subnet (프레젠테이션 계층), Private Subnet (애플리케이션 계층), Private Subnet (데이터 계층)으로 나뉩니다.
- Security Group: 인스턴스 수준의 방화벽 역할을 하여 특정 트래픽만 허용하거나 차단합니다.
- Network Access Control List (NACL): 서브넷 수준의 방화벽 역할을 합니다.

1. 프레젠테이션 계층 (Presentation Layer / Frontend) = WEB
- 역할: 최종 사용자가 애플리케이션과 상호작용하는 사용자 인터페이스(UI) 및 통신을 담당합니다. 사용자에게 정보를 표시하고 사용자로부터 정보를 수집하는 역할을 합니다.
- 기술: HTML, CSS, JavaScript를 렌더링하는 웹 페이지, 데스크톱 애플리케이션, 모바일 앱 UI 등이 해당됩니다.
- AWS 서비스 예시:
- Amazon S3: 정적 웹사이트 호스팅
- Amazon CloudFront: 콘텐츠 전송 네트워크(CDN)를 통해 사용자에게 더 빠르게 콘텐츠를 전달
- Elastic Load Balancing (ELB): 트래픽을 분산하여 가용성과 확장성 확보
- Amazon EC2: 웹 서버(Nginx, Apache) 실행
2. 애플리케이션 계층 (Application Layer / Backend) = WAS
- 역할: 프레젠테이션 계층에서 수집된 정보를 비즈니스 로직을 사용하여 처리하고 핵심 처리, 비즈니스 규칙, 계산, 데이터 유효성 검사 등을 담당합니다. 데이터 계층의 데이터를 추가, 삭제, 수정할 수 있습니다. 프레젠테이션 계층과 데이터 계층 간의 모든 통신은 반드시 애플리케이션 계층을 통과해야 합니다.
- 기술: Python, Java, PHP, Node.js, Ruby on Rails와 같은 언어를 사용하여 개발된 웹 애플리케이션 서버(WAS)가 이 계층에 해당합니다.
- AWS 서비스 예시:
- Amazon EC2: 애플리케이션 서버(Tomcat, JBoss, Spring Boot 등) 실행
- AWS Lambda: 서버리스 함수를 통해 비즈니스 로직 실행
- Elastic Load Balancing (ELB): 여러 애플리케이션 서버로 트래픽 분산
- Auto Scaling: 트래픽에 따라 애플리케이션 서버 수를 자동으로 조절
3. 데이터 계층 (Data Layer / DB)
- 역할: 애플리케이션에서 처리하는 정보가 저장되고 관리되는 곳입니다.
- 기술:
- 관계형 데이터베이스 관리 시스템 (RDBMS): 구조화된 데이터 저장에 적합(예: PostgreSQL, MySQL, Oracle, MS SQL Server)
- 비정형 데이터베이스 서버 (NoSQL): 대규모 비정형 데이터, 유연한 스키마, 빠른 읽기/쓰기에 적합 (예: MongoDB, DynamoDB, Cassandra)
- AWS 서비스 예시:
- Amazon RDS (Relational Database Service): 관리형 관계형 데이터베이스 서비스 (MySQL, PostgreSQL, Oracle, SQL Server, Aurora 등)
- Amazon DynamoDB: 관리형 NoSQL 데이터베이스 서비스
- Amazon ElastiCache: 인메모리 데이터 스토어 (Redis, Memcached)를 통해 데이터베이스 부하 감소 및 성능 향상
2.3. 3계층 설계의 이점
- 관심사 분리 / 논리적 및 물리적 분리: 각 계층이 독립적인 역할을 수행하므로, 특정 계층의 변경이 다른 계층에 미치는 영향을 최소화합니다. 이는 개발, 테스트, 배포를 용이하게 합니다.
- 신속한 개발: 각 계층을 독립적으로 개발하고 배포할 수 있어 개발 속도를 높일 수 있습니다.
- 향상된 확장성: 각 계층을 독립적으로 확장할 수 있습니다. 예를 들어, 웹 트래픽이 증가하면 프레젠테이션 계층의 서버만 확장하고, 데이터베이스 부하가 높으면 데이터 계층만 확장할 수 있습니다.
- 향상된 보안: 각 계층 간의 통신을 엄격하게 제어하여 보안을 강화할 수 있습니다. 예를 들어, 데이터베이스는 외부에서 직접 접근할 수 없도록 애플리케이션 계층을 통해서만 접근하도록 설정할 수 있습니다.
- 유연성 및 유지보수성: 각 계층이 독립적이므로 특정 계층을 업그레이드하거나 변경하는 것이 다른 계층에 영향을 주지 않아 시스템의 유연성과 유지보수성이 뛰어납니다.
오늘은 IT 인프라 배포의 다양한 패러다임과 장단점, 그리고 클라우드 환경에서 효율적인 애플리케이션 설계를 위한 AWS 3계층 아키텍처에 대해 자세히 알아보았습니다. 유익한 정보 공유가 되었길 바라면서
오늘도 하고픈걸 향해 떠나는 zooy였습니다 :)