← albertrim.com인프라 기초 노트

INFRA BASICS

서버는 어디에 살고,
코드는 어떻게 거기까지 가나

VPC·배스천·NAT부터 SSH·pem·jar 배포까지. 인프라를 처음 보는 사람이 남에게 설명할 수 있을 만큼만 담았어요.

비유 하나로 끝까지 가요. 클라우드는 땅, 서버는 식당, 배포는 요리 배달. 각 장 끝에는 남에게 설명할 때 쓸 한 문장을 붙였어요.

1부

서버가 사는 동네

클라우드에 서버를 두면 그 서버는 어떤 땅, 어떤 구역에 놓이고, 사람과 데이터는 어느 문으로 드나드는지.

1 VPC — 울타리 친 우리 땅

Virtual Private Cloud

VPC는 클라우드 안에 울타리를 친 우리 전용 땅이에요.

클라우드는 아마존 같은 회사가 지은 거대한 건물을 여러 회사가 나눠 쓰는 곳이에요. 그냥 두면 내 서버와 옆 회사 서버가 같은 복도에 놓이죠. 그래서 울타리를 쳐요. 그 울타리 안이 VPC예요.

VPC 전체 구조. 퍼블릭 서브넷에 배스천과 NAT, 프라이빗 서브넷에 앱 서버와 DB 관리자 · 개발자 집이나 사무실에서 바깥 인터넷 프로그램 설치 · 외부 서비스 VPC 울타리 친 우리 땅 퍼블릭 서브넷 길가 구역 · 인터넷과 통함 배스천 서버 사람이 들어오는 유일한 문 NAT 게이트웨이 서버가 나가는 심부름꾼 프라이빗 서브넷 안쪽 구역 · 밖에서 못 들어옴 앱 서버 공인 IP 없음 · 실제로 일하는 컴퓨터 DB 가장 안쪽 · 데이터 금고 사람이 들어오는 길 서버가 나가는 길
그림 1. 이 한 장이 1부 전체예요. 울타리(VPC), 두 구역(서브넷), 두 개의 문(배스천·NAT)

문 — 드나들려면 반드시 거치는 곳 인터넷과 통하는 구역 보호 구역

서버는 그냥 클라우드에 떠 있는 게 아니에요. 항상 어떤 VPC 안, 어떤 서브넷 안에 있어요. 구조도를 볼 땐 "이 서버가 어느 울타리, 어느 구역에 있지?"부터 찾으세요.
"같은 클라우드 건물을 여러 회사가 쓰는데 옆 회사가 우리 서버를 못 보는 이유야. 울타리를 쳐 놨거든."

2 서브넷 — 길가 구역과 안쪽 구역

서브넷은 울타리 안을 나눈 구역이에요. 길가 구역(퍼블릭)과 안쪽 구역(프라이빗), 이 둘만 기억하면 돼요.

구분퍼블릭 서브넷프라이빗 서브넷
비유길가 쪽 마당안쪽 주방·창고
인터넷직접 오갈 수 있음밖에서 들어올 길이 없음
뭘 두나문 역할 하는 것들 — 배스천, NAT, 로드밸런서(손님을 여러 서버에 나눠 주는 안내원)앱 서버, DB
인터넷은 퍼블릭 서브넷과 직접 통하고, 프라이빗 서브넷에는 직접 들어올 수 없다 바깥 인터넷 누구나 있는 곳 퍼블릭 서브넷 길가 구역 배스천 · NAT 로드밸런서 프라이빗 서브넷 안쪽 구역 앱 서버 · DB 중요한 건 전부 여기 직접 들어오는 길은 없어요
그림 2. 인터넷 → 프라이빗은 길 자체가 없어요. 반드시 퍼블릭의 문을 거쳐요

규칙은 하나예요. 중요한 건 전부 안쪽(프라이빗)에 둔다. 앱 서버도, DB도요. 그러면 바로 문제 두 개가 생겨요.

  1. 개발자가 안쪽 서버에 들어갈 길이 없다 → 3장 배스천
  2. 안쪽 서버도 밖에 나갈 일이 있다 → 4장 NAT
중요한 건 전부 프라이빗에. 퍼블릭에는 "문" 역할만 둬요.
"전부 길가에 두면 인터넷에서 아무나 두드릴 수 있잖아. 그래서 문만 길가에 두고 나머진 안쪽에 숨겨."

3 배스천 서버 — 사람이 들어오는 유일한 문

문제 ① 안쪽 서버에 개발자가 들어갈 길이 없다

배스천은 사람이 안쪽 서버로 들어가는 유일한 문이에요. 길가 구역에 세운 작은 경비실.

로그를 보거나 설정을 고치려면 서버에 직접 들어가야 해요. 그런데 안쪽 서버는 인터넷에서 들어갈 길이 없죠. 그래서 길가 구역에 작은 서버를 한 대 둬요. 그게 배스천(bastion, 요새)이에요.

  1. 개발자는 인터넷에서 배스천에 먼저 접속해요.
  2. 배스천에서 안쪽 서버로 다시 접속해요. 같은 울타리 안이라 통해요.
개발자는 배스천을 거쳐 앱 서버로 들어간다. 바로 가는 길은 없다 개발자 집 · 사무실 배스천 서버 퍼블릭 서브넷 앱 서버 프라이빗 서브넷 ① 먼저 여기로 ② 울타리 안에서 다시 바로 가는 길은 없음
그림 3. 개발자가 앱 서버까지 가는 두 단계

두 번 거치는 이유는 하나예요. 밖에 열린 문이 딱 하나가 되니까요. 문이 스무 개면 못 지키지만 하나면 지킬 수 있어요.

문은 하나만. 그 하나를 집중해서 지켜요.
"문 스무 개를 다 지킬 순 없잖아. 그래서 하나만 열고 거기만 지켜. 그 문이 배스천이야."

4 NAT 게이트웨이 — 밖으로만 나가는 심부름꾼

문제 ② 안쪽 서버도 밖에 나갈 일이 있다

NAT 게이트웨이는 안쪽 서버 대신 밖에 나갔다 오는 심부름꾼이에요.

안쪽 서버도 프로그램을 설치하고, 보안 패치를 받고, 다른 회사 서비스를 호출해요. 그런데 공인 IP(바깥 세상에서 쓰는 주소)가 없어서 직접은 못 나가요.

그래서 심부름꾼을 둬요. 안쪽 서버가 "이거 받아 와" 하면 NAT 게이트웨이가 자기 공인 IP로 바꿔서 대신 요청하고, 답이 오면 원래 서버에 돌려줘요.

앱 서버가 NAT에 부탁하면 NAT가 자기 이름으로 인터넷에 요청하고 응답을 전달한다. 밖에서 먼저 두드릴 수는 없다 앱 서버 안쪽 · 공인 IP 없음 NAT 게이트웨이 공인 IP 있음 바깥 인터넷 패치 · 외부 서비스 ① 이거 받아 와 ② NAT 이름으로 요청 ③ 응답 ④ 원래 서버에 전달 밖에서 먼저 두드리기는 안 됨
그림 4. 요청과 응답이 오가는 순서

제일 중요한 특징은 한 방향이라는 것. 안에서 먼저 시켜야만 움직여요. 밖에서 NAT한테 "나 들여보내 줘"라고 두드리는 건 안 돼요.

NAT = 안에서 밖으로만. 밖에서 안으로는 절대 안 돼요.
"NAT는 심부름꾼이야. 안에서 시키면 나갔다 오지만, 밖에서 그 문으로 들어올 순 없어."

5 배스천 vs NAT — 같은 자리, 반대 방향

구분배스천 서버NAT 게이트웨이
방향밖 → 안 (들어옴)안 → 밖 (나감)
누가 쓰나사람 (개발자, 운영자)서버 (프로그램)
목적관리 접속 (SSH)패치, 외부 서비스 호출
위치퍼블릭 서브넷퍼블릭 서브넷
없으면서버 관리 불가프로그램 설치·외부 연동 불가
배스천은 밖에서 안으로 사람이 들어오는 길, NAT는 안에서 밖으로 서버가 나가는 길 배스천 · 사람 · 밖 → 안 바깥 퍼블릭 배스천 서버 프라이빗 앱 서버 NAT · 서버 · 안 → 밖 바깥 퍼블릭 NAT 게이트웨이 프라이빗 앱 서버
그림 5. 두 구조를 나란히 놓은 모습
배스천 = 밖→안, 사람. NAT = 안→밖, 서버. 이 대칭 하나만 잡으면 나머지는 따라와요.
"배스천은 사람이 들어오는 문, NAT는 서버가 나가는 문. 둘 다 길가 구역에 있어."

6 실무에서 알아둘 것 — 요즘은 이렇게

배스천 없이 들어가는 방법이 생겼어요

AWS Session Manager를 쓰면 배스천 없이, 22번 포트도 안 열고 안쪽 서버에 들어갈 수 있어요. AWS 권한(IAM)으로 통제하고 접속 기록도 자동으로 남아요. 새로 지으면 이쪽을 먼저 검토하세요. 그래도 배스천 개념은 알아둬야 해요. 기존 시스템엔 거의 다 남아 있거든요.

개발자가 AWS Session Manager를 통해 권한 확인만으로 앱 서버에 들어간다. 22번 포트를 열지 않는다 개발자 AWS 계정으로 로그인 Session Manager 권한 확인 · 기록 남김 앱 서버 22번 포트 안 열음 배스천도, 열쇠 파일도 없이 들어가요
그림 6. 문을 하나 더 줄인 방식. 열쇠 대신 AWS 출입증(IAM)

NAT 게이트웨이는 돈이 꽤 나가요

시간당 요금에 더해 지나가는 데이터 GB당 요금이 붙어요. 가용영역(AZ)마다 하나씩 두면 그만큼 곱해지고요. 인프라 비용표 위쪽에 NAT Gateway가 있으면 이 항목을 먼저 보세요.

VPC Endpoint로 우회시켜요

S3나 DynamoDB(AWS 데이터베이스)로 가는 트래픽이 많다면 VPC Endpoint를 달아 NAT를 안 거치게 해요. AWS 안 길로 가니까 싸고 빨라요. S3·DynamoDB용 Endpoint는 무료예요.

앱 서버에서 S3로 갈 때 NAT와 인터넷을 거치는 길과 VPC Endpoint로 바로 가는 길 비교 앱 서버 프라이빗 NAT 게이트웨이 바깥 인터넷 S3 AWS 파일 창고 VPC Endpoint 밖으로 돌아감 · GB당 요금 AWS 안 길로 바로 · S3는 무료
그림 7. 같은 목적지, 다른 길. 위는 멀고 비싸고, 아래는 가깝고 S3라면 공짜예요
"요즘은 배스천 대신 Session Manager. NAT 비용이 크면 VPC Endpoint부터 확인."

2부

코드가 서버까지 가는 길

내 컴퓨터에서 고친 코드가 어떻게 자동으로 서버에 올라가 실행되는지. 자바 서버를 AWS EC2에 올리는 경우로 봐요.

7 전체 흐름 — push 한 번에 식당까지

CI/CD가 하는 일

코드를 push하면 자동으로 굽고(빌드), 서버에 갖다 놓고 켜요(배포). 이게 CI/CD예요.

요리로 비유하면 이래요.

등장인물비유하는 일
GitHub 저장소레시피 보관함코드를 보관해요.
GitHub Actions 러너임시 주방코드가 바뀌면 jar를 굽고 사라져요. Jenkins는 이 주방을 직접 차린 버전이에요.
EC224시간 여는 식당VPC 안에 항상 켜져 있는 리눅스 컴퓨터예요.
app.jar완성된 요리실행 가능한 프로그램 파일이에요.
개발자가 push하면 GitHub 저장소를 거쳐 러너가 jar를 만들고, VPC 안의 EC2로 전달된다 개발자 코드 고치고 push GitHub 저장소 레시피 보관함 GitHub Actions 러너 임시 주방 · jar 굽고 사라짐 인터넷으로 jar 전달 (SSH 등) AWS VPC · 울타리 친 땅 EC2 (리눅스 서버) 24시간 여는 식당
그림 8. push부터 EC2 실행까지. 보라색은 잠깐 생겼다 사라지고, 초록색은 항상 켜져 있어요

빌드 쪽 — 일회용 서버 쪽 — 항상 켜짐

포인트 세 개.

가장 기본적인 건네주기 방법이 SSH예요. 택배 기사가 열쇠로 식당 뒷문을 열고, 음식을 놓고, 스위치를 켜는 것과 같아요.

SSH 배포 4단계. 열쇠 꺼내기, 뒷문 두드리기, 음식 놓기, 스위치 켜기 ① 열쇠 꺼내기 GitHub Secrets의 pem ② 뒷문 두드리기 EC2 22번 포트 접속 ③ 음식 놓기 scp로 app.jar 복사 ④ 스위치 켜기 ssh로 재시작
그림 9. 러너가 SSH로 EC2에 jar를 놓고 실행하는 4단계

준비물은 세 개예요.

  1. EC2 만들 때 받은 SSH 개인키(.pem)를 GitHub 저장소 Secrets에 저장
  2. EC2 보안 그룹(방화벽)에서 22번 포트 열기
  3. 워크플로우 yml(자동화 순서를 적는 설정 파일)에 scpssh 명령 적기
CI = 코드가 바뀌면 자동으로 굽기. CD = 구운 걸 자동으로 갖다 놓고 켜기.
"push하면 임시 주방이 요리를 만들고, SSH로 식당에 갖다 놓고 켜. 그게 CI/CD야."

8 SSH — 암호로 잠근 무전기

Secure Shell

SSH는 멀리 있는 컴퓨터를 내 앞에 있는 것처럼 조종하는, 암호로 잠근 무전기예요.

지구 반대편 컴퓨터에 명령을 치고 파일을 보낼 수 있어요. 그 내용은 아무도 엿듣지 못하게 암호로 잠겨요.

러너는 개인키(열쇠)를, EC2는 공개키(자물쇠)를 가지고 있고 그 사이는 암호 터널이다 러너 · 내 PC 개인키(.pem) = 열쇠 암호 터널 · 아무도 못 엿봄 EC2 공개키 = 자물쇠 열쇠와 자물쇠는 한 쌍. 열쇠 가진 쪽만 열려요
그림 10. 개인키(열쇠)와 공개키(자물쇠), 그 사이의 암호 터널

핵심은 하나. 열쇠와 자물쇠는 한 쌍이에요.

SSH로 하는 일은 두 가지예요.

# EC2에 들어가서 명령 치기 (여기서 java -jar 실행)
ssh -i key.pem ec2-user@1.2.3.4

# 같은 터널로 파일 복사 (scp = SSH 위에서 파일 복사)
scp -i key.pem app.jar ec2-user@1.2.3.4:/home/ec2-user/

22번 포트는 이 무전기의 주파수 번호예요. 보안 그룹에서 22번을 열어야 두드릴 수 있고, 아무 IP에나 열면 위험하니 보통 정해진 IP만 허용해요.

실무 팁 하나

java -jar를 직접 치지 말고 리눅스 systemd에 서비스로 등록해 두세요. sudo systemctl restart myapp으로 재시작하고, 서버가 재부팅돼도 알아서 다시 떠요.

SSH = 암호 무전기. 개인키(열쇠)는 나만, 공개키(자물쇠)는 서버에.
"비밀번호는 누가 훔쳐볼 수 있지만 열쇠 파일은 내 컴퓨터에만 있어. 그래서 SSH는 비밀번호 대신 열쇠를 써."

9 pem 키 — 열쇠는 서버가 아니라 계정에

질문: pem 파일은 EC2마다 하나씩인가요? 아니면 한 EC2에 여러 개?

둘 다 아니에요. pem은 EC2가 아니라 AWS 계정에 있는 열쇠 쌍이에요. EC2를 만들 때 "이 열쇠 쓸게요" 하고 고르는 것뿐이에요.

아파트 마스터키 하나로 여러 집을 여는 것과 같아요.

열쇠 쌍 하나로 EC2 여러 대를 열 수 있고, EC2 한 대에 열쇠 여러 개를 달 수도 있다 열쇠 쌍 1개 → 서버 여러 대 열쇠 쌍 A 계정에 있음 EC2 1 EC2 2 EC2 3 서버 1대 ← 열쇠 여러 개 열쇠 쌍 A 열쇠 쌍 B (동료) EC2 4 자물쇠 2개 달림 열쇠는 계정 것. 서버는 자물쇠만 달고 있어요
그림 11. 열쇠 쌍과 서버는 1:1이 아니에요
경우되나요어떻게
열쇠 쌍 1개 → EC2 여러 대돼요. 흔해요.만들 때 같은 열쇠 쌍을 고르면 끝.
EC2 1대 → 열쇠 여러 개돼요.서버 안 authorized_keys 파일에 다른 사람 공개키를 한 줄 더 붙여요. AWS 콘솔이 아니라 리눅스 파일을 직접 고치는 거예요.
잃어버린 개인키 다시 받기안 돼요.AWS는 개인키를 보관하지 않아요. 만들 때 딱 한 번 다운로드.

그래서 개인키가 새면 그 열쇠로 만든 EC2 전부가 위험해요. 실무에서는 환경별·팀별로 열쇠 쌍을 나누되, EC2마다 만들진 않아요. 개발/운영 서버 열쇠를 분리하고, 배포용(GitHub Actions) 열쇠를 따로 두는 식이에요.

요즘은 pem 없이도 들어가요

Session Manager는 22번 포트를 아예 안 열고 AWS 권한(IAM)만으로 터미널에 들어가요. EC2 Instance Connect는 60초짜리 1회용 열쇠를 발급해요. 열쇠 파일을 여러 사람이 돌려 쓰는 문제가 사라져요.

pem은 계정의 열쇠. 하나로 여러 서버, 한 서버에 여러 열쇠 모두 가능. 잃어버리면 못 받아요.
"pem은 서버에 붙은 게 아니라 계정에 있는 열쇠야. 하나로 여러 서버를 열 수 있어."

10 WAS와 jar — 도시락형과 식당형

질문: EC2에서 도는 WAS가 jar 파일들인 거죠?

절반만 맞아요. 두 가지 형태가 있고, 요즘은 첫 번째가 대세예요.

WAS는 자바 프로그램을 돌려 주는 서버 소프트웨어예요. Tomcat이 대표예요.

내장 WAS는 app.jar 안에 Tomcat과 내 코드가 함께 있고, 외장 WAS는 서버에 설치된 Tomcat 안에 war를 넣는다 내장 WAS (Spring Boot) app.jar Tomcat 안에 들어 있음 내 코드 설정 yml 포함 도시락형 · java -jar app.jar 외장 WAS (전통 방식) EC2에 설치된 Tomcat webapps/ 내 코드를 .war로 넣음 식당형 · war 넣고 Tomcat 재시작
그림 12. 왼쪽은 jar 하나가 전부, 오른쪽은 건물(Tomcat)이 따로 있어요
구분내장 WAS (Spring Boot)외장 WAS (전통)
비유도시락. 밥·반찬 다 들어 있음식당 건물 + 요리사
파일app.jar 하나. Tomcat 포함Tomcat 설치 + .war 파일
실행java -jar app.jarwar를 webapps/에 넣고 Tomcat 재시작
배포jar만 옮기면 끝war 옮기고 Tomcat 재시작 (또는 자동 배포)
요즘대세옛 시스템에 남아 있음

어느 쪽인지는 서버에서 한 줄이면 알아요.

ps -ef | grep java

# java -jar xxx.jar 가 보이면 → 내장
# org.apache.catalina.startup.Bootstrap 이 보이면 → 외장

내장형이라도 EC2 한 대에 jar가 여러 개 돌 수 있어요. 주문 서비스 8080, 재고 서비스 8081처럼 포트를 나눠요. "WAS가 돌고 있다"는 말이 실제로는 "jar 프로세스가 N개 떠 있다"인 경우가 많아요.

요즘 자바 서버 = jar 하나에 Tomcat까지 들어 있는 도시락. jar만 옮기면 배포 끝.
"WAS는 자바 프로그램을 돌려 주는 식당 건물이야. 요즘은 그 건물이 도시락(jar) 안에 접혀 들어가 있다고 보면 돼."

11 설정 바꾸는 데 재빌드가 필요할까

질문: Tomcat 설정을 바꾸려면 재빌드·재배포해야 한다면, 내장형인 거죠?

네, 내장형이라는 강한 신호예요. 설정이 jar 안에 같이 구워져 있거든요.

구분내장 WAS외장 WAS
설정이 있는 곳jar 안 application.yml서버의 Tomcat conf/server.xml
바꾸는 법jar 안 yml만 바꾸면 재빌드. 바깥으로 빼면 빌드 없음SSH로 파일 고치고 Tomcat만 재시작. 빌드 없음

빌드 없이 바꾸는 방법이 있어요. Spring Boot는 바깥에 있는 설정을 먼저 봐요.

설정 우선순위. 실행 인자, 환경 변수, jar 옆 yml, jar 안 yml 순으로 왼쪽이 이긴다 왼쪽일수록 먼저 적용돼요 (이겨요) ① 실행 인자 --server.port=9090 ② 환경 변수 SERVER_PORT=9090 ③ jar 옆 yml 파일만 바꾸면 됨 ④ jar 안 yml 바꾸려면 재빌드
그림 13. ①②③은 빌드 없이 바꿔요. ④만 재빌드가 필요해요
# 실행 인자
java -jar app.jar --server.port=9090

# 환경 변수
SERVER_TOMCAT_THREADS_MAX=400 java -jar app.jar

# jar 옆에 application.yml 을 두면 jar 안의 것보다 먼저 적용

설정 하나에 빌드 5분이 붙는다면

설정이 jar 안에만 있고 바깥 설정 경로를 안 쓰는 거예요. 잘못은 아니지만, 자주 바뀌는 값은 환경변수나 외부 yml로 빼두면 운영 부담이 줄어요.

설정 우선순위: 실행 인자 > 환경 변수 > jar 옆 yml > jar 안 yml. 왼쪽일수록 빌드 없이 바꿔요.
"설정 바꿀 때마다 빌드한다면 설정이 jar 안에만 있는 거야. 밖으로 빼면 빌드 없이 바꿔."

12 배포 방식의 진화 — SSH에서 Docker까지

처음엔 SSH로 직접, 커지면 S3 경유 → CodeDeploy → Docker 순으로 넘어가요.

배포 방식 진화. SSH 직접, S3 경유, CodeDeploy, Docker와 ECR SSH 직접 서버 열쇠 필요 S3 경유 서버 열쇠 불필요 CodeDeploy 여러 대도 한 번에 Docker + ECR 서버에 자바 설치 불필요 오른쪽으로 갈수록 서버에 22번 포트를 열 필요가 없어요
그림 14. 서버 열쇠를 러너에게 안 줘도 되는 쪽으로 진화해요
방식어떻게언제 쓰나
SSH 직접러너가 scp로 놓고 ssh로 켜요.서버 한두 대, 처음 시작할 때
S3 경유러너가 jar를 S3에 올리고, EC2가 스스로 내려받아요.22번 포트를 닫고 싶을 때
CodeDeploy러너가 배포를 걸면 EC2 안의 에이전트(작은 배포 도우미)가 S3에서 받아 설치하고 재시작해요.서버가 여러 대일 때
Docker + ECR컨테이너 이미지를 ECR(이미지 창고)에 올리고 EC2가 docker pull로 받아요.요즘 가장 흔해요. 새로 시작하면 이쪽

1부와 연결하면, SSH 직접 방식은 EC2에 22번 포트를 여는 거라 "문은 하나만" 원칙과 부딪혀요. S3 경유, CodeDeploy, Session Manager는 그 문을 안 열어도 되는 방법이에요.

오른쪽으로 갈수록 러너가 서버 열쇠를 안 가져도 되고, 서버에 자바 버전을 안 맞춰도 돼요.
"SSH로 직접 넣으려면 러너한테 서버 열쇠를 줘야 하잖아. 그 열쇠를 안 줘도 되게 만든 게 S3 경유고, 서버에 자바까지 안 깔아도 되게 만든 게 Docker야."

3부

챙겨 가기

13 한 장 요약

  • VPC = 울타리 친 우리 땅. 서브넷 = 그 안의 구역. 중요한 건 전부 프라이빗에.
  • 배스천 = 사람이 들어오는 유일한 문. NAT = 서버가 나가는 심부름꾼. 같은 자리(퍼블릭), 반대 방향.
  • 요즘은 배스천 대신 Session Manager. NAT 비용이 크면 VPC Endpoint.
  • CI = 코드 바뀌면 자동으로 굽기. CD = 구운 걸 자동으로 갖다 놓고 켜기.
  • 러너 = 일회용 주방. EC2 = 항상 켜진 식당. 둘 사이 전달은 SSH가 기본.
  • SSH = 암호 무전기. 개인키(열쇠)는 나만, 공개키(자물쇠)는 서버에. 주파수는 22번.
  • pem = 계정의 열쇠 쌍. 하나로 여러 서버 가능. 잃어버리면 못 받음.
  • Spring Boot jar = Tomcat 내장 도시락. jar만 옮기면 배포 끝.
  • 설정 바꿀 때마다 재빌드한다면 설정이 jar 안에만 있는 것. 환경변수·외부 yml로 빼면 빌드 없이 변경.
  • 배포 진화: SSH 직접 → S3 경유 → CodeDeploy → Docker + ECR. 갈수록 서버 열쇠가 필요 없어짐.

14 용어 한 줄 사전

구조도나 대화에서 튀어나올 때 찾아보세요

용어한 줄 설명비유
VPCVirtual Private Cloud클라우드 안에 만든 내 전용 네트워크울타리 친 땅
서브넷VPC 안을 나눈 구역길가 구역 / 안쪽 구역
퍼블릭 서브넷인터넷과 직접 통하는 구역길가
프라이빗 서브넷인터넷에서 못 들어오는 구역안쪽 주방·창고
공인 IPPublic IP · Internet Protocol인터넷 전체에서 통하는 주소도로명 주소
사설 IPPrivate IP울타리 안에서만 통하는 주소집 안 방 번호
배스천 서버Bastion Host · bastion = 요새안쪽 서버로 들어가기 위해 거치는 서버경비실 있는 유일한 문
NAT 게이트웨이Network Address Translation안쪽 서버 대신 밖에 나가는 장치심부름꾼
로드밸런서들어오는 요청을 여러 서버에 나눠 주는 장치손님을 창구로 나눠 주는 안내원
보안 그룹서버별 방화벽. 어느 포트를 누구에게 열지문 앞 출입 명단
포트한 컴퓨터 안의 창구 번호. 22=SSH, 80/443=웹무전기 주파수
Session ManagerAWS Systems Manager Session Manager22번 포트 없이 AWS 권한으로 서버에 접속열쇠 대신 출입증
VPC EndpointVirtual Private Cloud EndpointNAT 없이 AWS 서비스로 가는 전용 길건물 안 지름길
가용영역 (AZ)Availability Zone한 지역 안의 독립된 데이터센터같은 도시의 다른 건물
IAMIdentity and Access ManagementAWS 권한 관리출입증 발급소
EC2Elastic Compute CloudAWS에서 빌린 가상 컴퓨터(서버)24시간 식당
러너CI가 빌드할 때 잠깐 쓰는 일회용 컴퓨터임시 주방
GitHub Actions / Jenkins코드가 바뀌면 자동으로 빌드·배포하는 도구주방 자동화
CI / CDContinuous Integration / Continuous Delivery자동 빌드 / 자동 배포굽기 / 배달
SSHSecure Shell원격 컴퓨터를 안전하게 조종하는 방법암호 무전기
scpSecure CopySSH로 파일 복사무전기로 택배 보내기
공개키 / 개인키서버에 다는 자물쇠 / 내가 가진 열쇠자물쇠 / 열쇠
pemPrivacy-Enhanced Mail (파일 형식 이름)개인키를 담은 파일열쇠 파일
ymlYAML · YAML Ain't Markup Language설정이나 자동화 순서를 적는 텍스트 파일 형식설정 메모지
GitHub Secrets저장소에 숨겨 두는 비밀값금고
jarJava Archive자바 프로그램을 하나로 묶은 파일도시락
warWeb Application Archive외장 WAS에 넣는 자바 웹앱 파일식당에 들어가는 요리사
WASWeb Application Server자바 웹 프로그램을 실행해 주는 서버 소프트웨어식당 건물
Tomcat가장 흔한 WAS식당 건물 브랜드
Spring BootTomcat을 내장한 자바 프레임워크도시락 만드는 법
systemd리눅스에서 프로그램을 서비스로 등록해 자동 실행자동 스위치
S3Simple Storage ServiceAWS 파일 창고큰 창고
CodeDeployS3의 새 버전을 서버에 자동 설치배달 로봇
Docker / ECRECR · Elastic Container Registry프로그램과 실행 환경을 통째로 담은 상자 / 그 상자 창고밀키트 / 밀키트 창고