본문 바로가기

Cloud

(9)
CI/CD CI/CD는지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Deployment, CD)를 의미하며, 소프트웨어 개발 프로세스를 자동화하고 효율적으로 만드는 방법론이자 도구 체계다. 이를 통해 개발, 테스트, 배포 과정에서 발생할 수 있는 오류를 빠르게 감지하고 수정하며, 새로운 코드를 자주 배포할 수 있게 한다.1. CI(Continuous Integration, 지속적 통합)CI는 여러 개발자가 동시에 작업하는 코드를 자주 통합하는 것을 목표로 한다. 각 개발자는 자신의 코드를 주기적으로 버전 관리 시스템(예: Git)에 푸시하고, 푸시된 코드가 자동 빌드 및 테스트 과정을 거치도록 설정한다.주요 특징:코드를 자주 통합해 발생할 수 있는 충돌을 조기에 발..
도커 도커란 무엇인가도커는 컨테이너 기술을 사용하여 애플리케이션과 그 의존성을 하나의 패키지로 묶어주는 플랫폼이다.쉽게 말해, "내 컴퓨터에서 잘 되던 코드가 다른 환경에서도 동일하게 동작하게 만들어주는 도구"라고 생각하면 된다.도커의 핵심 개념이미지 (Image)애플리케이션과 필요한 모든 파일, 의존성을 포함한 실행 가능한 패키지.불변성을 가지며, 컨테이너를 생성하는 템플릿 역할을 한다.예: "Node.js 앱"을 실행하기 위한 이미지.컨테이너 (Container)도커 이미지를 실행한 상태.가볍고 독립적인 실행 환경으로, 각 컨테이너는 서로 격리되어 있다.예: "Node.js 앱"이 실행 중인 상태.도커 파일 (Dockerfile)이미지를 생성하기 위한 설정 파일.도커 파일에 명령어를 정의하여, 이미지 생성..
프록시 서버 프록시 서버란프록시 서버는 대리 서버로, 클라이언트와 실제 서버 사이에 위치하여 데이터를 중계하는 역할을 한다.주요 기능:클라이언트의 요청을 받아 실제 서버에 전달하고, 응답을 다시 클라이언트에 전달.보안 강화: IP 숨기기 및 요청 필터링.캐싱: 자주 사용하는 데이터를 저장하여 요청 속도 향상.트래픽 제어: 대량의 트래픽을 효율적으로 관리. 분산 처리란분산 처리는 여러 대의 서버나 컴퓨터에 작업을 나누어 처리하는 방식이다.대량의 데이터나 복잡한 작업을 효율적으로 처리하기 위해 사용된다.장점:성능 향상: 작업을 분산하여 처리 속도를 증가.확장성: 필요에 따라 서버를 추가하여 성능을 높일 수 있음.안정성: 한 서버에 문제가 발생해도 전체 시스템에 영향을 주지 않음.  쿠버네티스와 도커: 데브옵스에서의 역할..
AWS 배포 하기 SCP(Secure Copy Protocol)SCP는 서로 다른 환경(OS 등)에서 안전하게 파일을 전송하기 위해 사용하는 프로토콜이다.이 프로토콜은 SSH(Secure Shell)를 기반으로 하며, 파일 전송 시 데이터가 암호화되므로 높은 보안성을 제공한다.SCP는 시큐어 카피 프로토콜(Secure Copy Protocol)의 약자로, 통로 역할을 하는 프로토콜을 통해 안전하게 파일을 전송한다.AWS를 활용한 배포 과정RDS 생성Amazon RDS(Relational Database Service)를 생성하고 보안 그룹의 인바운드 규칙을 설정하여 EC2와 연결 가능하도록 설정한다.S3 생성S3 버킷을 생성하고, 버킷 속성에서 정적 웹 사이트 호스팅을 활성화한다.S3 버킷 속성에서 제공되는 웹 사이트 엔..
S3 Simple Storage Service (S3)S3는 AWS에서 제공하는 객체 스토리지 서비스로, 대량의 데이터를 안전하고 안정적으로 저장할 수 있는 서비스를 제공한다. 주요 특징은 다음과 같다:1. 내구성S3는 99.9999999999%의 내구성을 제공한다. 이는 데이터 손실 가능성이 거의 없음을 의미하며, 중요한 데이터를 안정적으로 보관할 수 있는 강력한 스토리지 옵션이다.2. 스토리지 클래스S3는 다양한 스토리지 클래스를 제공한다. 데이터를 사용하는 빈도와 보관 목적에 따라 적합한 클래스를 선택할 수 있다:Standard: 자주 접근하는 데이터를 위한 클래스.Glacier: 장기 보관 데이터에 적합하며, 비용 효율적인 저장 옵션.Intelligent-Tiering: 데이터 접근 패턴에 따라 자동으..
RDS EC2 (Elastic Compute Cloud)정의:EC2는 AWS에서 제공하는 가상 서버 서비스다.사용자는 서버의 운영 체제, 소프트웨어, 설정 등을 직접 선택하고 관리할 수 있으며, 서버의 유지보수와 보안도 스스로 책임진다.비유:EC2를 사용하는 것은 자신의 차를 직접 운전하고 관리하는 것과 같다. 차량의 점검과 수리는 사용자가 직접 해야 하며, 모든 관리와 유지보수가 사용자의 책임이다.RDS (Relational Database Service)정의:RDS는 AWS에서 제공하는 관리형 관계형 데이터베이스 서비스다.데이터베이스의 생성, 관리, 백업, 보안 패치 등을 AWS가 자동으로 수행하며, 사용자는 데이터베이스의 운영에 대한 부담을 덜 수 있다.비유:RDS를 사용하는 것은 장기 렌트카를 이용하는 ..
EC2 AWS와 클라우드 컴퓨팅AWS는 클라우드 컴퓨팅 서비스를 제공하며, 사용자는 필요에 따라 가상의 컴퓨터를 빌려 사용할 수 있다. AWS에서 제공하는 이러한 가상 컴퓨터를 Instance라고 부른다. Instance는 사용자가 필요로 하는 컴퓨팅 리소스를 유연하게 제공한다. EC2AWS에서 제공하는 가상 컴퓨팅 서비스의 핵심은 **EC2 (Elastic Compute Cloud)**다. EC2는 사용자가 원하는 성능과 사양의 가상 서버를 손쉽게 생성하고 관리할 수 있도록 돕는다. 이를 통해 서버 하드웨어를 직접 구매하거나 관리할 필요 없이 필요한 만큼만 유연하게 사용 가능하다. EC2의 작동 과정AMI (Amazon Machine Image)가상 컴퓨터의 초기 상태를 정의하는 이미지 파일이다. AMI에는 ..
Deploy 1. 개발 환경과 코드의 분리배포 시 코드와 환경 설정은 반드시 분리해야 한다.코드가 특정 환경에 종속성을 가지지 않도록 설계해야, 다양한 환경에서 동일한 코드로 실행할 수 있다.문제점: 환경에 종속된 코드위와 같은 코드가 있다면, 로컬 개발 환경과 운영 환경에서 데이터베이스 URL이 다를 경우 코드 수정이 필요하다. 이는 유지보수성과 재사용성을 떨어뜨린다.String databaseUrl = "jdbc:mysql://localhost:3306/mydb";해결 방법:환경별 설정 파일을 외부에서 관리하고, 코드는 환경 설정에 의존하지 않게 설계한다. 예를 들어, Spring Boot에서는 application.properties 또는 application.yml을 사용해 환경 설정을 관리한다.# appli..