IT 인프라 기초: 서비스 운영의 기반 이해하기
IT 서비스를 만들 때 개발자는 보통 코드와 기능에 집중합니다.
하지만 웹사이트나 모바일 앱이 실제 사용자에게 서비스를 제공하려면 코드만으로는 부족합니다.
사용자의 요청을 받아 처리할 서버, 데이터를 전달하는 네트워크, 데이터를 저장하는 데이터베이스와 스토리지, 외부 접근을 제어하는 보안 시스템, 장애를 확인하는 모니터링 시스템 등이 함께 필요합니다.
이처럼 서비스를 실행하고 운영하기 위해 필요한 기술과 환경을 통틀어 IT 인프라(IT Infrastructure)라고 합니다.
이 문서에서는 비전공자와 주니어 개발자가 IT 인프라를 처음 접한다는 것을 전제로 다음 내용을 쉽게 설명합니다.
- IT 인프라란 무엇인가?
- 서버와 클라이언트는 어떻게 통신하는가?
- IP, 도메인, 포트는 무엇인가?
- 네트워크와 저장소는 어떤 역할을 하는가?
- 클라우드와 온프레미스는 무엇이 다른가?
- 서비스는 어떤 과정을 거쳐 구축되고 운영되는가?
- 개발자가 인프라를 알아야 하는 이유는 무엇인가?
1. IT 인프라란 무엇인가?#
1.1 IT 인프라의 정의#
IT 인프라는 디지털 서비스를 제공하고 운영하기 위해 필요한 하드웨어, 소프트웨어, 네트워크, 저장소, 보안 및 운영 환경을 포함한 전체 기반 시스템을 의미합니다.
쉽게 말하면 다음과 같습니다.
애플리케이션이 정상적으로 실행되고 사용자에게 서비스를 제공할 수 있도록 만들어진 기반 환경
예를 들어 쇼핑몰 서비스를 운영한다고 생각해 보겠습니다.
사용자가 스마트폰에서 쇼핑몰에 접속하면 다음과 같은 구성요소가 필요합니다.
사용자
↓
인터넷
↓
웹 서버
↓
애플리케이션
↓
데이터베이스
↓
스토리지여기에 실제 운영 환경에서는 다음과 같은 요소가 추가됩니다.
┌─ 모니터링
├─ 로그
├─ 백업
└─ 보안
│
사용자 → 인터넷 → 서버 → 애플리케이션 → 데이터베이스
│
└→ 스토리지즉, IT 인프라는 특정 장비 하나를 의미하는 것이 아니라 서비스를 움직이게 만드는 전체 기반 환경이라고 이해하면 됩니다.
1.2 IT 인프라의 주요 구성요소#
IT 인프라는 크게 다음과 같이 구분할 수 있습니다.
| 구성요소 | 주요 역할 | 예시 |
|---|---|---|
| 서버 | 요청 처리 및 서비스 실행 | Linux Server, Windows Server |
| 네트워크 | 시스템 간 데이터 통신 | Internet, LAN, Router |
| 저장소 | 파일과 데이터 저장 | SSD, NAS, Object Storage |
| 데이터베이스 | 구조화된 데이터 관리 | PostgreSQL, MySQL |
| 운영체제 | 서버의 기본 실행 환경 | Linux, Windows |
| 보안 | 시스템과 데이터 보호 | Firewall, IAM |
| 로드 밸런서 | 여러 서버로 트래픽 분산 | Nginx, ALB |
| CDN | 콘텐츠를 사용자에게 빠르게 전달 | Cloud CDN |
| 모니터링 | 시스템 상태 확인 | Prometheus, Grafana |
| 로그 | 시스템의 동작 기록 | Loki, Elasticsearch |
모든 서비스가 위의 모든 구성요소를 반드시 사용하는 것은 아닙니다.
서비스 규모와 요구사항에 따라 필요한 구성요소가 달라집니다.
2. 왜 IT 인프라를 알아야 할까?#
개발자는 코드를 작성하는 것만으로 끝나지 않습니다.
실제 서비스에서는 다음과 같은 문제가 발생할 수 있습니다.
- 서버가 다운된다.
- 데이터베이스 연결이 끊어진다.
- 트래픽이 갑자기 증가한다.
- 디스크 용량이 부족해진다.
- 네트워크가 느려진다.
- 외부에서 비정상적인 접근이 발생한다.
- 배포 후 서비스가 정상적으로 동작하지 않는다.
이런 문제를 이해하려면 애플리케이션 코드뿐 아니라 인프라에 대한 기본적인 이해가 필요합니다.
특히 주니어 개발자라면 다음 정도의 흐름을 이해하는 것부터 시작하면 좋습니다.
사용자
↓
DNS
↓
인터넷
↓
로드 밸런서
↓
웹 서버
↓
애플리케이션 서버
↓
데이터베이스
↓
스토리지이 흐름을 이해하면 이후 Docker, Kubernetes, AWS, Terraform, CI/CD 같은 기술을 학습할 때도 전체적인 위치를 이해하기 쉬워집니다.
3. 서버란 무엇인가?#
3.1 서버의 정의#
서버(Server)는 다른 컴퓨터나 프로그램의 요청을 받아 데이터를 처리하거나 서비스를 제공하는 시스템입니다.
서버는 반드시 특별한 모양의 컴퓨터를 의미하지 않습니다.
일반적인 PC도 특정 서비스를 제공하도록 구성하면 서버로 사용할 수 있습니다.
예를 들어 개발자가 자신의 PC에서 웹 애플리케이션을 실행한다면 그 컴퓨터는 다른 프로그램에게 서비스를 제공하는 서버 역할을 할 수 있습니다.
3.2 서버와 일반 PC의 차이#
서버와 일반 PC의 가장 큰 차이는 단순히 성능이 아닙니다.
서버는 일반적으로 다음과 같은 목적을 가지고 운영됩니다.
- 여러 사용자의 요청 처리
- 지속적인 서비스 제공
- 안정적인 운영
- 데이터 보호
- 장애 대응
- 원격 관리
예를 들어 회사의 웹 서버는 24시간 사용자의 요청을 받을 수 있어야 합니다.
따라서 서버 환경에서는 CPU와 메모리뿐만 아니라 디스크 안정성, 네트워크, 전원, 백업, 모니터링, 보안 등이 중요합니다.
4. 서버의 주요 종류#
서버라는 이름은 역할에 따라 다양하게 사용됩니다.
4.1 웹 서버#
웹 브라우저의 요청을 받아 웹 콘텐츠를 전달하는 서버입니다.
대표적인 소프트웨어:
- Nginx
- Apache HTTP Server
- Microsoft IIS
예를 들어 사용자가 다음 주소에 접속한다고 가정해 보겠습니다.
https://example.com웹 서버는 사용자의 요청을 받아 적절한 웹 콘텐츠를 전달합니다.
4.2 애플리케이션 서버#
웹 요청을 받아 실제 비즈니스 로직을 실행하는 서버입니다.
예를 들어 다음과 같은 작업을 처리할 수 있습니다.
회원 로그인
상품 검색
주문 생성
결제 요청
게시글 등록Java, Python, Node.js 등의 애플리케이션이 서버에서 실행될 수 있습니다.
4.3 데이터베이스 서버#
서비스에서 사용하는 데이터를 저장하고 조회하는 역할을 합니다.
대표적인 데이터베이스:
- PostgreSQL
- MySQL
- MariaDB
- Oracle Database
- MongoDB
예를 들어 쇼핑몰이라면 다음 데이터가 데이터베이스에 저장될 수 있습니다.
회원 정보
상품 정보
주문 정보
결제 정보
게시글
댓글4.4 파일 및 객체 저장소#
이미지, 동영상, 문서와 같은 파일을 저장합니다.
예를 들어 쇼핑몰에서 상품 이미지를 업로드하면 이미지 파일을 저장할 공간이 필요합니다.
대표적인 저장 방식:
- 로컬 디스크
- NAS
- 오브젝트 스토리지
- 클라우드 스토리지
5. 클라이언트와 서버#
5.1 클라이언트란?#
클라이언트(Client)는 서버가 제공하는 서비스를 사용하는 프로그램 또는 장치입니다.
대표적인 예:
- 웹 브라우저
- 스마트폰 앱
- 데스크톱 프로그램
- 다른 서버에서 실행되는 프로그램
예를 들어 Chrome에서 ThinkX 웹사이트에 접속하면 Chrome은 클라이언트 역할을 합니다.
5.2 요청과 응답#
클라이언트와 서버의 기본적인 통신 방식은 **요청(Request)과 응답(Response)**입니다.
클라이언트
│
│ Request
↓
서버
│
│ Response
↓
클라이언트예를 들어 사용자가 웹사이트에 접속하면 다음과 같은 흐름이 만들어집니다.
브라우저
│
│ GET /articles
↓
웹 서버
│
↓
애플리케이션
│
↓
데이터베이스
│
↑
조회 결과
│
↑
HTML / JSON
│
↑
브라우저이 구조는 IT 인프라를 이해하기 위한 가장 기본적인 흐름입니다.
6. 네트워크란 무엇인가?#
6.1 네트워크의 정의#
**네트워크(Network)**는 컴퓨터와 서버 등의 장치가 서로 데이터를 주고받을 수 있도록 연결된 통신 환경입니다.
간단하게 표현하면 다음과 같습니다.
컴퓨터끼리 정보를 주고받기 위한 연결 구조
인터넷 역시 전 세계의 수많은 네트워크가 서로 연결된 거대한 네트워크입니다.
6.2 네트워크의 주요 구성요소#
라우터#
서로 다른 네트워크 사이에서 데이터를 전달하는 역할을 합니다.
쉽게 생각하면 여러 도로가 만나는 교차로에서 목적지에 맞는 경로를 선택하는 장치와 비슷합니다.
스위치#
같은 네트워크 안에서 여러 장치를 연결하고 데이터를 전달합니다.
방화벽#
허용된 네트워크 접근과 차단해야 할 접근을 구분하는 보안 장치입니다.
7. IP 주소, 도메인, 포트#
IT 인프라를 이해할 때 반드시 알아야 하는 개념입니다.
7.1 IP 주소#
IP 주소는 네트워크에서 장치나 인터페이스를 식별하기 위해 사용하는 주소입니다.
IPv4의 예:
192.168.1.10공인 네트워크에서 사용되는 주소의 예:
8.8.8.8IPv6에서는 다음과 같은 형태를 사용합니다.
2001:4860:4860::88887.2 도메인#
IP 주소를 직접 입력하는 대신 사람이 기억하기 쉬운 이름을 사용할 수 있습니다.
8.8.8.8대신
example.com처럼 사용하는 것입니다.
도메인과 IP 주소의 연결은 **DNS(Domain Name System)**가 담당합니다.
example.com
↓
DNS
↓
IP 주소다만 도메인이 단순히 IP 주소의 별명인 것만은 아닙니다.
DNS는 하나의 도메인에 여러 IP 주소를 연결하거나, 서비스 종류에 따라 다양한 DNS 레코드를 구성하는 등 다양한 역할을 수행합니다.
7.3 포트#
하나의 서버에서는 여러 네트워크 서비스가 동시에 실행될 수 있습니다.
이때 어떤 서비스와 통신할 것인지 구분하기 위해 포트 번호를 사용합니다.
예를 들어:
192.168.1.10:80에서
192.168.1.10은 IP 주소이고,
80은 포트 번호입니다.
자주 접하는 포트#
| 포트 | 일반적인 용도 |
|---|---|
| 22 | SSH |
| 53 | DNS |
| 80 | HTTP |
| 443 | HTTPS |
| 25 | SMTP |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 3389 | RDP |
포트 번호는 서비스가 사용하는 기본값일 뿐이며, 실제 환경에서는 다른 포트를 사용할 수도 있습니다.
8. HTTP와 HTTPS#
8.1 HTTP#
**HTTP(HyperText Transfer Protocol)**는 웹에서 클라이언트와 서버가 데이터를 주고받기 위해 사용하는 대표적인 프로토콜입니다.
예를 들어 브라우저가 웹 서버에 페이지를 요청할 때 HTTP 기반의 통신이 이루어집니다.
8.2 HTTPS#
HTTPS는 HTTP 통신에 TLS를 적용하여 통신 내용을 보호하는 방식입니다.
HTTPS를 사용하면 일반적으로 다음과 같은 보안 효과를 얻을 수 있습니다.
- 전송 데이터의 기밀성 보호
- 통신 상대 서버의 인증
- 데이터 변조 탐지
웹 서비스에서는 일반적으로 HTTPS 사용이 기본적인 보안 요구사항으로 취급됩니다.
9. 저장소와 데이터베이스#
9.1 저장소란?#
저장소(Storage)는 데이터를 저장하는 공간입니다.
대표적인 저장 장치는 다음과 같습니다.
HDD#
자기 디스크를 이용하는 저장장치입니다.
- 대용량 저장에 유리
- SSD보다 일반적으로 접근 속도가 느림
- 상대적으로 저렴한 대용량 저장에 활용
SSD#
반도체 기반의 저장장치입니다.
- 빠른 데이터 접근
- 낮은 지연시간
- 서버와 PC 등 다양한 환경에서 사용
NAS#
네트워크를 통해 여러 장치에서 접근할 수 있는 저장장치입니다.
오브젝트 스토리지#
파일을 객체 단위로 저장하는 방식입니다.
클라우드 환경에서 이미지, 동영상, 백업 파일 등을 저장할 때 많이 사용합니다.
10. 데이터베이스란?#
데이터베이스는 애플리케이션이 사용하는 데이터를 저장하고 검색하고 관리하기 위한 시스템입니다.
예를 들어 게시판 서비스를 만든다면 다음과 같은 데이터가 필요합니다.
사용자
게시글
댓글
좋아요
첨부파일 정보관계형 데이터베이스에서는 이러한 데이터를 테이블 형태로 관리할 수 있습니다.
users
posts
comments
likes대표적인 관계형 데이터베이스는 다음과 같습니다.
- PostgreSQL
- MySQL
- MariaDB
- Oracle Database
- Microsoft SQL Server
11. 클라우드와 온프레미스#
IT 인프라를 구축하는 방식은 여러 가지가 있습니다.
대표적으로 클라우드, 온프레미스, 그리고 두 방식을 조합한 하이브리드 환경이 있습니다.
11.1 클라우드#
클라우드 컴퓨팅은 인터넷을 통해 서버, 저장소, 데이터베이스 등의 컴퓨팅 자원을 필요에 따라 사용할 수 있는 방식입니다.
대표적인 클라우드 사업자:
- AWS
- Microsoft Azure
- Google Cloud
장점#
- 빠른 인프라 구축
- 필요한 자원을 비교적 쉽게 확장
- 초기 하드웨어 투자 부담 감소
- 다양한 관리형 서비스 활용 가능
주의할 점#
- 사용량에 따른 비용 관리 필요
- 클라우드 서비스에 대한 이해 필요
- 잘못된 설정으로 인한 보안 문제 가능
- 특정 서비스에 대한 의존성이 발생할 수 있음
11.2 온프레미스#
온프레미스(On-Premise)는 기업이나 조직이 직접 서버와 네트워크 장비 등의 인프라를 구축하고 운영하는 방식입니다.
예를 들어 회사가 자체 데이터센터를 구축하고 서버를 직접 운영할 수 있습니다.
장점#
- 인프라에 대한 직접적인 통제
- 자체 환경에 맞는 세밀한 구성 가능
- 특정 환경에서는 장기적인 비용 구조를 유리하게 설계할 수 있음
단점#
- 초기 구축 비용 발생
- 장비 관리 필요
- 전문 운영 인력 필요
- 장애 및 유지보수를 직접 관리해야 함
- 확장에 시간과 비용이 필요할 수 있음
11.3 클라우드와 온프레미스 비교#
| 구분 | 클라우드 | 온프레미스 |
|---|---|---|
| 초기 투자 | 비교적 낮음 | 높음 |
| 구축 속도 | 빠름 | 상대적으로 느림 |
| 확장 | 비교적 쉬움 | 장비 추가 필요 |
| 관리 | 서비스에 따라 관리 부담 감소 | 직접 관리 |
| 하드웨어 | 직접 구매하지 않을 수 있음 | 직접 구매 |
| 비용 구조 | 사용량 기반 등 다양 | 초기 투자 + 운영비 |
| 통제 범위 | 서비스 모델에 따라 다름 | 높음 |
어떤 방식이 항상 더 좋은 것은 아닙니다.
서비스의 규모, 보안 요구사항, 규제, 비용, 운영 인력 등을 종합적으로 고려해야 합니다.
12. 로드 밸런서란?#
사용자가 많아지면 서버 한 대만으로 모든 요청을 처리하기 어려워질 수 있습니다.
이때 여러 서버에 요청을 분산하는 장치가 필요합니다.
이를 **로드 밸런서(Load Balancer)**라고 합니다.
┌→ 서버 A
사용자 → 로드 밸런서 → 서버 B
└→ 서버 C로드 밸런서를 사용하면 다음과 같은 효과를 얻을 수 있습니다.
- 여러 서버로 트래픽 분산
- 서버 한 대의 부하 감소
- 서버 장애에 대한 대응
- 서비스 확장에 유리한 구조 구성
13. CDN이란?#
CDN(Content Delivery Network)은 이미지, 동영상, JavaScript, CSS 등의 콘텐츠를 사용자에게 효율적으로 전달하기 위한 분산 네트워크입니다.
사용자가 멀리 있는 원본 서버에 직접 접속하는 대신, CDN의 엣지 서버에서 캐시된 콘텐츠를 전달받을 수 있습니다.
사용자
↓
CDN 엣지 서버
↓
캐시된 이미지 / CSS / JS캐시된 콘텐츠가 없다면 CDN이 원본 서버에서 콘텐츠를 가져온 뒤 사용자에게 전달하고 이후 요청에 활용할 수 있습니다.
CDN은 특히 다음과 같은 콘텐츠에 효과적입니다.
- 이미지
- 동영상
- CSS
- JavaScript
- 웹 폰트
- 정적 파일
14. 기본적인 보안 개념#
14.1 암호화#
**암호화(Encryption)**는 데이터를 인가되지 않은 사람이 읽기 어렵도록 변환하는 기술입니다.
대표적으로 HTTPS 통신에서는 TLS를 이용해 통신 내용을 보호합니다.
평문
↓
암호화
↓
암호문
↓
전송
↓
복호화
↓
원래 데이터14.2 복호화#
**복호화(Decryption)**는 암호화된 데이터를 다시 원래의 형태로 복원하는 과정입니다.
다만 모든 보안 데이터가 복호화되는 것은 아닙니다.
특히 사용자 비밀번호는 일반적으로 복호화 가능한 암호문으로 저장하지 않습니다.
일반적인 웹 서비스에서는 비밀번호를 안전한 해시 함수와 적절한 솔트 등을 이용해 저장하고, 로그인 시 입력값을 같은 방식으로 처리하여 저장된 값과 비교합니다.
사용자가 입력한 비밀번호
↓
해시
↓
저장된 해시값과 비교따라서
"비밀번호를 암호화해서 저장한 뒤 로그인할 때 복호화한다."
라고 이해하는 것은 적절하지 않습니다.
15. 방화벽이란?#
**방화벽(Firewall)**은 네트워크 트래픽을 정책에 따라 허용하거나 차단하는 보안 시스템입니다.
예를 들어 서버에 다음과 같은 접근 정책을 설정할 수 있습니다.
인터넷
│
├── 80 → 허용
├── 443 → 허용
└── 22 → 특정 IP만 허용중요한 점은 방화벽이 모든 해킹이나 악성코드를 자동으로 막아주는 만능 보안 장치는 아니라는 것입니다.
방화벽은 네트워크 접근을 통제하는 여러 보안 계층 중 하나입니다.
16. 백업이란?#
**백업(Backup)**은 장애나 실수 등으로 원본 데이터가 손실될 경우를 대비해 별도의 위치에 데이터를 복사해두는 것입니다.
백업이 필요한 대표적인 상황은 다음과 같습니다.
- 디스크 고장
- 서버 장애
- 사용자의 실수
- 잘못된 배포
- 데이터베이스 오류
- 랜섬웨어
- 자연재해
중요한 것은 백업을 했다는 사실보다 실제로 복구할 수 있는지 확인하는 것입니다.
따라서 정기적인 복구 테스트도 필요합니다.
17. IT 인프라 구축 과정#
인프라는 단순히 서버를 한 대 설치하는 것으로 끝나지 않습니다.
일반적인 서비스 구축 과정은 다음과 같이 생각할 수 있습니다.
요구사항 분석
↓
아키텍처 설계
↓
자원 계획
↓
인프라 구축
↓
애플리케이션 배포
↓
테스트
↓
운영
↓
모니터링
↓
개선17.1 요구사항 분석#
먼저 어떤 서비스를 만들 것인지 정해야 합니다.
예를 들어 다음과 같은 항목을 확인합니다.
- 예상 사용자 수
- 예상 트래픽
- 필요한 기능
- 데이터 규모
- 응답 속도
- 가용성 요구사항
- 보안 요구사항
- 백업 요구사항
- 예상 비용
17.2 아키텍처 설계#
요구사항을 바탕으로 서비스의 전체 구조를 설계합니다.
간단한 웹 서비스라면 다음과 같은 구조가 될 수 있습니다.
사용자
↓
DNS
↓
CDN / Load Balancer
↓
Web Server
↓
Application Server
↓
Database
↓
Storage서비스 규모가 커지면 캐시, 메시지 큐, 검색 시스템, 여러 데이터베이스, 모니터링 시스템 등이 추가될 수 있습니다.
17.3 인프라 구축#
설계된 구조에 따라 실제 환경을 구성합니다.
예:
- 서버 생성
- 운영체제 설치
- 네트워크 구성
- 방화벽 설정
- 데이터베이스 구성
- 스토리지 구성
- 도메인 연결
- HTTPS 설정
- 모니터링 구성
클라우드 환경에서는 이러한 작업의 상당 부분을 클라우드 콘솔이나 API, IaC 도구 등을 이용해 수행할 수 있습니다.
18. 테스트#
인프라 구축이 끝났다고 바로 서비스를 운영해서는 안 됩니다.
다양한 테스트가 필요합니다.
18.1 기능 테스트#
서비스가 정상적으로 작동하는지 확인합니다.
로그인
회원가입
상품 조회
게시글 등록
API 호출18.2 성능 테스트#
서비스가 어느 정도의 부하를 처리할 수 있는지 확인합니다.
주요 측정 항목:
- 응답 시간
- 처리량
- 동시 사용자 수
- CPU 사용률
- 메모리 사용량
- 데이터베이스 부하
18.3 보안 테스트#
다음과 같은 항목을 확인합니다.
- 불필요한 포트가 열려 있는가?
- 접근 권한이 적절한가?
- 인증이 제대로 적용되어 있는가?
- 최신 보안 패치가 적용되어 있는가?
- 민감한 데이터가 노출되지 않는가?
18.4 장애 및 복구 테스트#
실제 운영에서는 장애가 발생할 수 있습니다.
따라서 다음과 같은 상황을 가정하고 복구 절차를 검증할 필요가 있습니다.
서버 장애
데이터베이스 장애
네트워크 장애
스토리지 장애
애플리케이션 장애그리고 다음 질문에 답할 수 있어야 합니다.
장애가 발생하면 어떻게 알 수 있는가?
누가 대응하는가?
서비스를 어떻게 복구하는가?
데이터는 어떻게 복구하는가?
19. 운영과 모니터링#
서비스를 배포했다고 인프라 작업이 끝나는 것은 아닙니다.
실제 운영에서는 지속적인 관찰과 관리가 필요합니다.
19.1 모니터링#
대표적으로 다음 지표를 확인합니다.
서버#
- CPU
- 메모리
- 디스크
- 네트워크
애플리케이션#
- 요청 수
- 응답 시간
- 오류율
데이터베이스#
- 연결 수
- 쿼리 성능
- CPU
- 메모리
- 저장공간
서비스#
- 가용성
- 장애 발생 여부
- 사용자 요청 성공률
20. 로그란 무엇인가?#
로그(Log)는 시스템이나 애플리케이션에서 발생한 동작을 기록한 데이터입니다.
예를 들어 다음과 같은 기록이 남을 수 있습니다.
2026-09-22 13:10:21 INFO User login success
2026-09-22 13:10:25 INFO GET /api/users
2026-09-22 13:10:27 ERROR Database connection failed로그는 장애 원인을 찾거나 보안 이벤트를 확인할 때 중요한 자료가 됩니다.
따라서 운영 환경에서는 모니터링과 로그 관리를 함께 고려하는 것이 좋습니다.
21. 인프라 자동화#
서비스 규모가 커지면 사람이 서버를 하나씩 직접 설정하는 방식에는 한계가 있습니다.
그래서 인프라를 코드로 관리하는 IaC(Infrastructure as Code) 방식이 사용됩니다.
대표적인 도구:
- Terraform
- OpenTofu
- Ansible
예를 들어 사람이 직접 서버를 만들고 설정하는 대신 코드로 다음과 같은 인프라를 정의할 수 있습니다.
서버 3대
네트워크 구성
로드 밸런서
데이터베이스
스토리지
방화벽 규칙이렇게 하면 인프라를 반복적으로 구축하거나 변경 사항을 관리하기 쉬워집니다.
22. 컨테이너와 Kubernetes#
최근의 서비스 환경에서는 애플리케이션을 컨테이너(Container) 형태로 실행하는 경우가 많습니다.
대표적인 기술이 Docker입니다.
Docker를 사용하면 애플리케이션과 실행에 필요한 환경을 하나의 이미지로 패키징할 수 있습니다.
Application
+
Runtime
+
Dependencies
↓
Docker Image
↓
Container서비스가 매우 커져 컨테이너가 많아지면 컨테이너의 배포와 관리, 확장 등을 자동화하기 위해 Kubernetes 같은 오케스트레이션 플랫폼을 사용할 수 있습니다.
Kubernetes
│
├── Container
├── Container
├── Container
└── Container다만 모든 서비스에 Kubernetes가 필요한 것은 아닙니다.
작은 서비스라면 Docker Compose, 클라우드의 관리형 서비스 등 더 단순한 방식으로 운영하는 것이 적절할 수도 있습니다.
23. 개발자가 알아야 할 인프라 핵심 흐름#
주니어 개발자라면 처음부터 모든 인프라 기술을 깊게 공부할 필요는 없습니다.
먼저 다음 흐름을 이해하는 것이 중요합니다.
사용자
↓
도메인
↓
DNS
↓
IP
↓
포트
↓
HTTP / HTTPS
↓
웹 서버
↓
애플리케이션
↓
데이터베이스
↓
스토리지그리고 서비스가 성장하면 다음 요소가 추가될 수 있습니다.
┌→ Cache
│
사용자 → CDN → Load Balancer
│
├→ App Server 1
├→ App Server 2
└→ App Server 3
│
↓
Database
│
↓
Storage이 전체 흐름을 이해하면 개발 중 발생하는 많은 문제를 보다 구조적으로 바라볼 수 있습니다.
24. 인프라를 공부할 때 알아두면 좋은 기술#
기초를 익힌 다음에는 다음 기술을 단계적으로 학습할 수 있습니다.
네트워크#
- TCP/IP
- HTTP/HTTPS
- DNS
- IP
- Port
- Routing
- Firewall
운영체제#
- Linux
- Process
- Thread
- File System
- Permission
- Shell
서버#
- Nginx
- Apache
- Windows Server
- Linux Server
데이터#
- PostgreSQL
- MySQL
- Redis
- Object Storage
컨테이너#
- Docker
- Docker Compose
- Kubernetes
클라우드#
- AWS
- Azure
- Google Cloud
자동화#
- GitHub Actions
- GitLab CI/CD
- Terraform
- Ansible
관측성#
- Metrics
- Logs
- Traces
- Prometheus
- Grafana
모든 기술을 한꺼번에 공부하기보다는 기본 개념 → Linux → 네트워크 → Docker → 클라우드 → CI/CD → Kubernetes와 같이 단계적으로 접근하는 것이 좋습니다.
25. 한눈에 이해하는 IT 인프라#
IT 인프라를 하나의 서비스로 연결해서 보면 다음과 같습니다.
사용자
│
↓
인터넷
│
↓
DNS
│
↓
CDN / Load Balancer
│
┌────────┴────────┐
↓ ↓
Web Server Web Server
│ │
└────────┬────────┘
↓
Application
│
┌────────┴────────┐
↓ ↓
Database Cache
│
↓
Storage그리고 전체 시스템을 다음 요소들이 지원합니다.
┌─────────────────────────────────────┐
│ 보안 │
│ Firewall / IAM / TLS │
├─────────────────────────────────────┤
│ 운영 │
│ Monitoring / Logging / Backup │
├─────────────────────────────────────┤
│ 자동화 │
│ IaC / CI/CD / Docker │
└─────────────────────────────────────┘26. 핵심 정리#
IT 인프라는 단순히 서버를 관리하는 기술이 아닙니다.
서비스가 사용자에게 안정적으로 제공되기 위해 필요한 컴퓨팅, 네트워크, 데이터, 보안, 저장소, 운영 환경 전체를 이해하는 것이 IT 인프라의 핵심입니다.
이번 장에서 기억해야 할 핵심 개념은 다음과 같습니다.
- 서버는 요청을 처리하고 서비스를 제공한다.
- 클라이언트는 서버의 서비스를 이용한다.
- 네트워크는 시스템 사이의 데이터 통신을 담당한다.
- IP 주소는 네트워크에서 장치를 식별하는 주소다.
- 도메인은 사람이 사용하기 쉬운 이름이며 DNS를 통해 IP 주소 등으로 연결된다.
- 포트는 서버에서 실행되는 네트워크 서비스를 구분하는 데 사용된다.
- 데이터베이스는 서비스에서 사용하는 데이터를 관리한다.
- 스토리지는 파일과 데이터를 저장한다.
- 로드 밸런서는 여러 서버로 요청을 분산한다.
- CDN은 사용자에게 콘텐츠를 효율적으로 전달한다.
- 방화벽은 네트워크 접근을 정책에 따라 제어한다.
- 백업은 데이터 손실에 대비하기 위한 중요한 운영 요소다.
- 클라우드는 필요한 컴퓨팅 자원을 서비스 형태로 사용할 수 있게 한다.
- Docker는 애플리케이션을 컨테이너 형태로 패키징하고 실행하는 데 활용된다.
- Kubernetes는 대규모 컨테이너 환경의 배포와 관리를 자동화하는 데 활용된다.
- 모니터링과 로그는 서비스의 상태를 확인하고 장애 원인을 찾는 데 중요하다.
- IaC를 이용하면 인프라를 코드로 정의하고 반복적으로 관리할 수 있다.
결국 인프라를 이해한다는 것은 단순히 서버 명령어를 외우는 것이 아니라,
사용자의 요청이 어떤 경로를 통해 서버에 도착하고, 애플리케이션이 데이터를 처리한 뒤, 다시 사용자에게 결과를 전달하는 전체 흐름을 이해하는 것
이라고 할 수 있습니다.
이 흐름을 이해하면 이후 학습하게 될 Linux, Docker, Kubernetes, AWS, 네트워크, DevOps, CI/CD, 클라우드 아키텍처를 훨씬 쉽게 이해할 수 있습니다.