전체 글 654

[CICD] Github Action으로 CICD 구축하기 4)

1. 들어가며.. 이번 시간에는 가장 널리 사용되는 CICD 플랫폼 중 하나인 Github Action을 사용하여 간단한 CICD Pipeline을 구축해봄으로써 CICD의 실제 작동 방법을 학습하겠습니다. Github Action을 사용하여 빌드, 테스트를 해보고 더 나아가 docker image까지 빌드 및 push까지 구현해 봅니다. 그 다음 과정인 실제 배포는 CICD나 Github Action에 관한 내용을 넘어서서 실제 인프라 (예시: AWS)에 대한 이해도와 설정 방법까지 알아야 하므로 이번 세션에서는 다루지 않습니다. AWS 배포 부분까지 구현에 관심이 있으신 분들은 공식 문서를 참조하실 수 있습니다. 이번 세션의 목적은 간단한 CICD를 구축하여 CICD의 작동 방법과 구조를 조금 더 자..

[CICD] 다양한 CICD Tools 알아보기 3)

1. 다양한 CICD 플랫폼 CICD의 중요성이 많이 인지되고 대기업부터 스타트업까지 여러 기업들이 CICD 시스템을 도입함에 따라서 CICD 구축을 도와주는 CICD 플랫폼들도 다양해지고 있습니다. 예전에는 CICD 시스템을 구축하기 위해서 전담 엔지니어가 필요하는 등 고된 작업이었던 시대가 있었지만, 요즘은 간단한 설정만으로도 기본적인 CICD를 쉽게 구현할 수 있는 시대가 되었습니다. 가장 널리 알려지고 사용되고 있는 CICD 플랫폼들은 다음과 같습니다: Jenkins Travis CI Circle CI Github Action 각 CICD 플랫폼들에 대해서 간략하게 알아보도록 하겠습니다. 2. Jenkins Jenkins는 CICD 플랫폼의 원조라고 할 수 있습니다. 처음에는 Hudson이라는 이..

[CICD] CICD의 개념 및 동작원리 2)

1. CICD란 무엇일까? CICD는 Continuous Integration / Continuous Deployment 의 약자 입니다. 한국어로 하면 지속적인 통합 과 지속적인 배포 입니다. Continous 즉 지속적이라는 단어는 바로 자동화를 통한 지속을 이야기 합니다. CICD 시스템은 빌드, 테스트 그리고 배포를 자동화 함으로서 개발자들의 생산성을 높이고 (개발에만 신경쓸 수 있으므로) 배포를 더 빠르게 그리고 더 자주 할 수 있도록 합니다. 이렇듯 더 빠르고 더 자주하는 배포를 바로 지속적인 배포라고 표현하는 것입니다. 다음 이어지는 자세한 설명을 통해 정확히 어떠한 과정을 통해서 지속적인 배포가 되게 하는지 알아보도록 하겠습니다. 2. Continuous Integration(CI) CIC..

[CICD] CICD는 언제, 왜 필요할까? 1)

1. 들어가며.. CICD를 제대로 이해하기 위해서는 CICD가 왜 생겨났는지 그 배경과 역사를 이해하는 것이 중요합니다. CICD가 없을때는 개발이 어떻게 진행되는지 알아보고, CICD가 어떻게 개발자들의 삶과 생산성을 발전시켜주는지 알아봅니다. 본격적인 내용에 앞서 앞으로 저희는 Staging 서버라는 단어가 자주 보게 될 것 입니다. Staging은 실제 유저에게 배포되어 서비스되는 단계인 Production 의 전 단계 서버를 의미합니다. 실제 유저에게 배포하기 전에 테스트 하는 용으로 주로 사용됩니다. 앞으로 자주 출몰하는 Build 라는 단어도 생소 할 수 있습니다. Build란 인간이 읽을 수 있는 소스코드를 프로그램 실행 시 컴퓨터가 읽을 수 있게 필요한 모든 것(pre-processing..

[AWS] ALB - [Network] Nginx를 사용한 Load Balancing 적용**

1. Nginx Nginx는 최근 증가하고 있는 웹 서비스의 요구를 지원하기 위해 개발된 고성능 웹서버입니다. Nginx는 적은 자원의 사용으로 높은 성능과 높은 동시성 보이는 것을 목표로 만들어졌습니다. 기존에는 Apache를 웹서버로 많이 사용했지만, Apache 서버는 웹과 모바일의 발전으로 점점 늘어나는 트래픽을 감당하기 어려워 졌고, 크고 작은 문제들이 많이 생겼습니다. 이런 문제를 해결하기 위해 Nginx가 개발되으며 현재는 로드밸런싱, 캐싱, HTTP Server 등의 다양한 용도로 많이 사용되고 있습니다. 2. Nginx 준비 2-1. Nginx 설치 Mac에서 Homebrew로 Nginx 설치 $ brew install nginx Ubuntu에서 apt로 Nginx 설치 $ sudo ap..

[AWS] ALB - [Network] Proxies & Load Balancing

1. Proxy 1-1. Proxy 란? 서버와 서버 사이에서 목적에 따라 특정 서버들을 대신해 여러가지 작업을 수행해주는 중개인 프록시 서버는 요청을 가로채서 응답할 수 있으며, 요청만 전달하거나 수정할 수도 있습니다. 우리는 지금까지 프론트엔드와 백엔드로 나누어 개발하면서, 요청의 주체인 프론트엔드 서버에서 요청을 받는 백엔드 서버에 직접 호출을 했습니다. 따라서 백엔드 서버에서는 해당 요청에 대한 모든 정보를 바로 확인할 수 있습니다. 그런데 이러한 구조에 프록시 서버를 추가하면 어떤 형태가 될까요? 프론트엔드 서버와 백엔드 서버 사이에 프록시 서버 역할을 하는 새로운 서버를 추가함으로써, 프론트엔드 서버는 백엔드 서버가 아닌 프록시 서버로 요청을 보내게 되고, 프록시 서버는 해당 요청을 받아 필요..

[AWS] VPC-5) Custom VPC를 활용하여 Infrastructure 구성하기 **

https://www.notion.so/wecode/AWS-Custom-VPC-Infrastructure-49b9447eb7a5429fb90f2a1c8330addd 1. 개요 AWS에 처음 가입했을 때부터 존재하는 Default VPC위에 EC2를 가동시키면 해당 EC2에 Public IP만 할당해도 접속이 가능했습니다. 이렇게 외부 접속이 가능하려면 라우팅 테이블(Routing Table)부터 IGW(Internet Gateway) 등 다양한 네트워크 설정이 선행되어야 하지만 Default VPC는 이 모든 것이 준비되어 있기 때문에 아무런 커스텀없이 사용할 수 있던 것입니다. 이번 실습을 통해 이러한 디테일한 설정들을 직접 해보면서 해당 설정이 어떠한 역할을 하게 되는지 배울 수 있습니다. 추가로 P..

[AWS] VPC-4) **

1. Virtual Private Cloud (VPC) 개념 1-1. Amazon VPC AWS(Amazon Web Services)의 전체 인프라스트럭처는 보안 시설로서 클라우드에서 실행되는 사용자의 모든 자원은 높은 보안성을 보장받을 수 있습니다. 이는 기본적으로 AWS를 사용하는 모든 기업들이 보장받을 수 있는 안정성입니다. 이에 Amazon VPC를 구축해서 사용자 수준에서 보안의 수준을 높일 수 있습니다. VPC(Virtual Private Cloud)는 클라우드 환경을 퍼블릭과 프라이빗의 논리적으로 독립된 네트워크 영역으로 분리할 수 있게 해줍니다. 어떤 리소스라도 논리적으로 분리된 영역에 격리할 수 있으며, 사용자가 네트워크 환경 설정에 대한 완전한 통제권을 가질 수 있습니다. 이는 사용자가..

[AWS] VPC-3) [Network] Subnet & CIDR

1. 서브넷(Subnet) 1-1. 서브넷(Subnet)이란? [그림 1-1] 서브네팅 IP 주소는 여러 클래스로 나누어져 있고, 그 중 A 클래스 네트워크는 1600만개가 넘는 IP 주소를 사용할 수 있습니다. 이렇게 하나의 네트워크에서 여러 호스트를 갖는, 즉 수많은 호스트가 하나의 브로드캐스트 주소를 바라보게 됩니다. 이런 경우 브로드캐스트로 전송되는 패킷이 해당 네트워크의 모든 호스트로 전달되어 효율적이지 못합니다. 따라서 효율적으로 IP 주소를 관리하기 위해 대규모 네트워크를 보다 작은 네트워크로 분할하여 통신 성능을 끌어올릴 수 있습니다. 또한 IP 주소는 32bit로 IP 주소 할당의 한계가 분명히 존재하기 때문에 네트워크를 분할하게 되면 이러한 제한적인 자원을 효율적으로 사용할 수 있습니다..