전체 글 29

Docker 환경에서 컨테이너끼리 통신하는법?

애플리케이션이 통신하는 방법 Docker는 애플리케이션의 배포, 실행, 관리를 위한 컨테이너 기반 가상화 기술이다. 기존 가상화 방식보다 경량화된 환경을 제공하며, 애플리케이션을 격리된 환경에서 실행할 수 있도록 돕는다.이때, 컨테이너 내부의 애플리케이션은 다양한 방법으로 통신할 수 있으며, 주요 방식은 3가지이다.  1️⃣ 웹 API를 호출 ( HTTP 요청) 일반적인 프론트엔드와 백엔드 간의 HTTP 통신이다. GET, POST, PUT, DELETE 등의 HTTP 메서드를 이용해 요청, 응답한다.  2️⃣ 로컬 PC와 통신 컨테이너가 아닌 호스트 머신(로컬 PC)와 직접 통신하는 방법이다. 예) 컨테이너에서 로컬에 있는 데이터베이스 (MySQL 등)와 연결 3️⃣ 다른 컨테이너와 통신 도커에서 컨테..

카테고리 없음 2025.03.30

AWS EC2란? (로드밸런서 등 포함)

AWS란?AWS(Amazon Web Services)는 아마존에서 제공하는 클라우드 컴퓨팅 서비스이다.따라서 인터넷을 통해 서버, 스토리지, 네트워크, 데이터베이스, 보안 등의 다양한 IT 인프라 서비스를 제공한다.즉, 물리적인 하드웨어를 관리하거나 구입할 필요없이 필요한 만큼의 컴퓨팅 자원을 서비스형태로 제공받을 수 있다. 클라우드 서비스 : AWS, Microsoft Azure, Google Cloud 등이 존재 🔷 aws에서 제공하는 주요 서비스컴퓨팅: EC2(가상 서버), Lambda(서버리스), ECS/EKS(컨테이너 서비스)스토리지: S3(파일 저장), EBS(블록 스토리지), EFS(네트워크 스토리지)데이터베이스: RDS( 관리형 DB)네트워킹: VPC (가상 네트워크), ELB( 로드밸런..

카테고리 없음 2025.03.16

컨테이너 배포 전략 (무중단 배포)

컨테이너 배포란?1️⃣ 이미지 배포Docker Hub, AWS ECR, Google Artifact Registry 등과 같은 이미지 레지스트리를 사용하여 컨테이너 이미지를 배포한다.이를 통해 이미지를 푸시하고, 다른 시스템이나 팀에서 해당 이미지를 사용할 수 있게 되어 동일한 환경에서 실행할 수 있다.  2️⃣ 컨테이너 배포컨테이너 배포란 어플리케이션을 컨테이너화하여 서버나 클라우드 환경에 배포하는 과정을 의미한다.  🔷 단일서버docker-compose를 이용하여 docker-compose up, down 으로 배포하고 중지할 수 있다. 🔷 프로덕션 환경 (실제 서비스가 운영되는 환경) 프로덕션 환경에서의 컨테이너 배포는 Docker Swarm, Kubernetes, AWS ECS 등과 같은 오케..

카테고리 없음 2025.03.16

Docker Compose란?

도커 컴포즈란?도커 컴포즈는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구이다. 따라서 도커 컴포즈를 통해 한 번에 컨테이너를 실행하거나 중지할 수 있다. 특히 복잡한 애플리케이션을 운영할 때, 여러 개의 서비스가 서로 연관되어 있는 경우 Docker Compose를 사용하면 더 효율적으로 관리할 수 있다. 도커 컴포즈 사용 이유 여러 개의 컨테이너를 사용할 때 발생할 수 있는 문제 중 하나는 설정 불일치이다. 예를 들어, 컨테이너의 데이터베이스와 웹 서버가 각각 다른 설정을 가지고 있을 때 설정이 일관되지 않아 오류가 발생할 수 있다. 각 컨테이너의 버전, 환경 변수, 네트워크 설정 등이 달라지면, 예상하지 못한 동작을 초..

카테고리 없음 2025.03.09

Docker File과 이미지 빌드 방법

도커파일이란? 도커파일은 도커 이미지를 생성하기 위한 텍스트 파일이다.즉, 도커파일엔 설치할 패키지, 환경변수 설정, 파일 복사, 실행 명령어 등의 코드가 포함된다. 이러한 도커파일을 빌드 시키면, 읽기 전용 이미지가 만들어지게 되고, 컨테이너를 사용하고 싶은 사용자는 이 이미지를 실행하여 컨테이너를 동작시킬 수 있다.도커파일 작성하기 (구성요소)# 도커파일 예시 # 베이스 이미지 설정FROM ubuntu:latest# 작업 디렉토리 설정WORKDIR /app# 필요한 파일 복사COPY . .# 패키지 설치RUN apt-get update && apt-get install -y curl# 환경 변수 설정ENV PORT=8080# 컨테이너 시작 시 실행할 명령어 설정CMD ["echo", "Hello, D..

카테고리 없음 2025.03.08

Docker란 무엇이고, VM과의 차이점?

1. 도커가 탄생한 배경기존 시스템에서는 애플리케이션을 구동하기 위해 다양한 패키지, 환경설정을 통일해야 했고, 이런 과정 속에서 패키지 끼리의 충돌이나 환경변수 충돌과 같은 문제가 많이 발생되어 시스템을 운영하기가 힘이 들었다. 이러한 문제점을 해결하기 위해 환경변수와 패키지를 분리해 가상화 시켜 구동하는 VM(가상머신)이 나왔지만, VM은 하이퍼바이저를 사용하여 환경 자체가 무겁다는 단점이 있다. 따라서 컨테이너를 사용하여 상대적으로 가벼운 도커가 등장하게 되었다.2. VM의 하이퍼바이저와 도커의 컨테이너 VM과 도커는 가상화시켜 독립된 환경을 만드는 플랫폼이라 하였다. 우선 도커가 무엇인지 알기 전에, 가상머신의 하이퍼바이저가 무엇인지, 도커의 컨테이너가 무엇인지 알아야한다.  1️⃣ 가상화먼저 가..

카테고리 없음 2025.03.07

네트워크 보안 ( 방화벽, IDS/IPS, WAF)

네트워크 보안의 중요성 웹 애플리케이션을 개발하고 서버를 운영하다 보면, 정상적인 요청뿐만 아니라 비정상적인 트래픽이나 악의적인 접근 시도가 발생할 수 있다. 이러한 위협을 방치하면 서비스의 안정성이 저하되고, 심각할 경우 데이터 유출이나 시스템 마비까지 이어질 수 있다. 따라서 효과적인 네트워크 보안 전략을 수립하는 것은 필수적이다. 이를 위해 방화벽, 침입 탐지 시스템(IDS), 침입 방지 시스템(IPS), 웹 애플리케이션 방화벽(WAF)과 같은 보안 기술이 필요하다.  방화벽 방화벽은 네트워크 보안의 가장 기본적인 장치로, 내부 네트워크와 외부 네트워크 사이에서 트래픽을 제어하는 역할을 한다. 예를 들어, 회사 내부 직원들은 인터넷을 자유롭게 사용할 수 있지만, 보안상 외부 사람이 회사 내부 서버에..

카테고리 없음 2025.03.03

리버스 프록시와 로드밸런싱

중간서버와 오리진 서버실제 클라이언트와 서버는 바로 통신이 되는 것이 아니다.클라이언트와 서버 사이에는 여러개의 중간 서버가 존재한다. 또한, 한 서버에 문제가 생기더라도 문제없이 동작할 수 있도록 서버를 다중화하여 운영하는 경우도 많다. 이때, 실제 응답을 보내는 서버를 오리진 서버라 한다. 중간서버는 프록시와 게이트웨이로 나눠진다. 프록시는 포워딩 프록시를 의미하고 게이트웨이는 리버스 프록시를 의미한다.* 포워딩 프록시 : 클라이언트와 가까이 위치해 있으며, 클라이언트를 대신하여 요청을 서버로 전달하는 역할을 한다. (클라이언트 보호)* 리버스 프록시: 서버와 가까이 위치해 있으며, 클라이언트의 요청을 서버로 전달하고 서버의 응답을 클라이언트에게 전달하는 역할을 한다. (서버 보호)   리버스 프록시..

카테고리 없음 2025.03.01

DNS와 CDN

DNSDNS는 도메인 이름을 IP 주소로 변환하는 시스템이다.즉, 사용자가 www.example.com과 같은 도메인 주소를 입력하면, DNS가 해당 도메인의 IP 주소를 찾아 웹 서버에 접속할 수 있도록 도와준다. DNS 특징 1️⃣ 역방향 DNS 지원일반적으로 DNS는 도메인 → IP 변환을 수행하지만, 역방향 DNS는 IP→ 도메인 변환을 수행한다.보통 이메일 스팸 필터링, 보안 로그 분석 등에 사용된다.  2️⃣ 캐싱 기능DNS는 같은 요청이 반복적으로 발행할 경우, 응답속도를 높이기 위해 캐싱 기능을 제공한다. 로컬 캐시: 사용자의 기기(PC, 브라우저)가 최근 조회한 DNS 정보를 저장ISP(인터넷 서비스 제공자) 캐시: 인터넷 서비스 제공업체(ISP)가 자주 조회되는 DNS 정보를 캐싱재귀 ..

카테고리 없음 2025.02.23

TCP/UDP

TCP와 UDP란? TCP와 UDP는 모두 전송계층이다.전송계층의 역할은, 포트번호를 이용하여 알맞은 프로세스에 데이터를 전달하는 역할을 한다. 즉, 네트워크계층에선 호스트를 특정하여 데이터를 전송했다면 전송계층에선 호스트가 실행하는 프로세스에 데이터를 전달하는 것이다.  TCP와 UDP의 차이점 그렇다면 모두 같은 전송계층인데, 두 프로토콜의 차이점은 무엇일까? 쉽게 요약하자면 TCP는 데이터를 보내기 전, 송신자와 수신자 간의 연결을 맺고, 신뢰성을 보장하면서 데이터를 전송하는 방식이고UDP는 연결을 맺지 않고, 신뢰성을 보장하지 않으면서 전송하는 방식이다. 그렇다면 TCP는 어떻게 신뢰성을 보장하며 전송하고, UDP는 어떻게 보장하지 않고 전송하는지 살펴보겠다.TCP1️⃣ 연결 지향적 (3-way ..

카테고리 없음 2025.02.23