코드스테이츠_Devops_4기/section2) 클라우드 서비스 운영 11

Section2 실습과제 Day 4

드뎌 대망의 실습과제 마지막날! 마일스톤10 API 요구사항에 맞춰 서버 애플리케이션을 작성합니다. 데이터베이스에 접속해, 원하는 데이터가 잘 들어갔는지 확인해 봅니다. 프론트엔드가 잘 작동하는지도 같이 확인합니다. 일단은 가이드라인에 맞춰 디비 하나 생성해주었당 그리곤 WAS 소스코드를 수정하여 api 요청하는 코드를 짜주었다 노드js는 처음이라 쉽지 않았지만.. 똑쟁이 팀원들 덕분에 또 잘 완성할 수 있었다. 'use strict' module.exports = async function (fastify, opts) { fastify.get('/', async function (req, reply) { // 몽고디비의 데이터베이스를 지정 const database = this.mongo.client...

Section2 실습과제 Day 3

오늘은 과연 제시간에 끝낼것인가... Day3 이 시작되어따. Day 3-4 프론트엔드의 배포를 자동화해야 합니다. CDN을 통해 프론트엔드를 캐싱하고, HTTPS를 적용해야 합니다. 프론트엔드와 WAS를 연결해야 합니다. 프론트엔드가 잘 작동하기 위해 WAS를 구현해야 합니다. 마일스톤7 CodeBuild나 GitHub Action 등을 통해 해당 환경 변수를 주입시켜 보세요. REACT_APP_ENDPOINT= 현재 정적 웹서버는 HTTP를 통해 제공되고 있으므로, WAS의 엔드포인트 역시 HTTP 프로토콜이어야 합니다. (이후 프론트엔드 HTTPS 적용 시에는 WAS 역시 HTTPS로의 연결이 필요합니다.) 자동화하려고 깃헙액션 워크플로우 야멜파일 돌리자마자 서버가 동작을 안했다 ubuntu-lat..

Section2 실습과제 Day 2

우리팀을 힘들게 했던 Day2... 이정도면 실습 로그보기 대잔치 똥꼬쇼라고 할 수 있겠어요... 로그 많이 보고 해결했으니.. 다행..? 암튼 주말동안 끝낸 day2 정리 시작합니다.. Day 2 WAS 및 mongoDB 이미지를 ECS를 통해 배포해야 합니다. WAS 이미지의 배포 자동화를 구현해야 합니다. WAS와 연결된 로드 밸런서에 HTTPS를 적용해야 합니다. 마일스톤4 ECS의 클러스터, 태스크 정의, 태스크, 서비스에 대한 개념을 이해합니다. ECR에 저장된 웹 서버 이미지를 ECS로 배포해 봅니다. ECS 태스크의 로그를 읽어봅니다. 로드 밸런서와 ECS 서비스를 연결해 봅니다. 일단 워크플로우에 aws.yml을 만들어따. (결과적으로 우리는 서비스 배포까지 마일스톤 4에서 만들고 나서 ..

Section2 실습과제 Day 1

다시 돌아온 실습과제... 다시 해보겠습니다. 전 할 수 있어염 왜냐면 우리팀이 있거들랑요? Day 1 WAS를 Docker Image로 빌드하여 컨테이너화 해야 합니다. 컨테이너화한 WAS를 Registry에 Push해야 합니다. 기존에 배포된 Docker Image를 활용/실행해야 합니다. mongoDB 기준 Docker Compose를 이용해, WAS와 DB를 한 번에 실행해야 합니다. WAS 이미지 빌드 및 push 자동화를 구현해야 합니다. ECR 서비스를 이용하는 방법을 배웁니다 결국 Github Action으로 도커 이미지를 빌드해서 ECR에 올리는 것을 자동화하는 것이 오늘의 목표입니당😊 마일스톤1 : 서버 컨테이너화와 레지스트리로 push node.js(fastify)로 작성된 웹 서버를..

Section2 AWS -2

이제 AWS 서비스를 하나 하나 정리해 보자! EC2(Elastic Compute Cloud) 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스이다. 아마존에서 가성의 컴퓨터를 한 대 빌리는 것과 같다. EC2는 비용, 성능, 용량 면에서 탄력적인 클라우드 컴퓨터를 제공한다. 인스턴스 : 가상 컴퓨팅 환경으로 하나의 서버라고 생각한다. AMI(Amazon Machine Image) : 운영체제, 애플리케이션 서버, 그리고 위에서 실행되는 애플리케이션 등 세부 내용을 담고 있다. AMI를 통해 자신이 원하는 수 만큼 인스턴스를 생성할 수 있다. 스토리지 - 인스턴스 루트 볼륨(Instance Root Volume) : 인스턴스 루트 디바이스에는 인스턴스 부팅을 위한 이미지가 포함되어 있다. 이 루트 디..

Section2 AWS

aws 가 시작되었땅.. 코드스테이츠에서 젤 듣고 싶었던? 수업? 역시나 어려웠당 3일동안 수업했는데 미루고미뤄서 한번에 몰아쓰는 포스팅..ㅎㅎ 클라우드 컴퓨팅의 세 가지 모델 IaaS (Infrastructure as a Service) : 컴퓨팅, 스토리지 및 네트워크 리소스와 같은 IT 인프라를 제공하는 비즈니스 모델. 개발자는 애플리케이션을 배포, 유지 관리 및 지원해야하며 IaaS 제공업체는 물리적 인프라를 유지 관리할 책임이 있다. PaaS (Platform as a Service) : 애플리케이션을 개발하고 유지 관리하는데 사용하는 하드웨어 및 소프트웨어 인프라를 제공한다. 클라우드 제공업체는 데이터 센터에서 하드웨어 및 소프트웨어 개발 도구를 호스팅한다. PaaS를 사용하면 온프레미스 인프..

Section2 Docker

드디어 도커가 시작됐다! 일할때 도커도커 얘기는 많이 들었어서 컨테이너 방식으로 뭐 서버를 어쩌구.. 이런 것 만 알았는데 이번에 제대로 공부할거당 컨테이너 : 도커라는 기술 위에 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고 실행될 수 있도록 만든 기 이미지 : 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿. 이미지를 이용하여 즉시 컨테이너를 만들 수 있다. 레지스트리 : 이미지가 저장되는 저장소 컨테이너 방식의 장점 1. 의존성 충돌 해소 애플리케이션을 컨테이너로 패키징하여 동일한 환경에서 실행시킬 수 있도록 환경을 격리시킨다. 예를 들어 여러 애플리케이션이 같은 라이브러리의 다른 버전을 필요로 한는 경우, 도커는 각 애플리케이션을 해당 버전의 라이브러리가 포함된 독립적인 컨테이너를..

Section2 YAML

JSON vs XML JSON XML 파싱과 직렬화 쉬움 많은 계층구조 확보 적은 용량 많은 태그돠 속성 포함 (데이터의 유연성) 네트워크 대역폭과 디스크 공간 절약 스키마를 통한 유효성 검사 (일관성, 정확성) javascript 사용에 있어 유리 여러 언어간 호환성 높음 텍스트 형식의 데이터 교환 포맷 vs 이진 형식의 데이터 교환 포맷 텍스트 형식의 데이터 교환 포맷 (JSON) 이진 형식의 데이터 교환 포맷 (protobuf) 가독성 좋음 떨어짐 용량 비교적 큼 비교적 작음 성능 비교적 낮은 데이터 처리 비교적 높은 처리 성능 호환성 대부분의 시스템에서 지원 가능 특정 언어나 플랫폼에서 지원 가능 sprint 작성 test1: #TODO: 여기에 1번 데이터를 YAML 형식으로 작성하세요. Car..

Section2 네트워크 기초-3

프록시 서버를 만드는 sprint를 제출해야했다. 페어활동으로 저번 시간에 끝내서 제출을 했지만 다시 복습할겸? 오늘 TIL 로 작성을 해보려고한다. 요즘 컨디션이 너무 안좋아서 TIL 작성을 못했다~홍홍 컴퓨터 포맷하기도 했고.. 다시 세팅하면서 겸사겸사?ㅎㅎㅎ 1. 내 컴퓨터를 원서버의 리버스 프록시 서버로 만들기 프록시 서버를 만듭니다. 프록시 서버의 포트는 원하는 포트 번호를 사용해도 됩니다 server { #프록시 서버 정보 (내 컴퓨터) listen 10026; server_name [내 IP]; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header myname devo..

Section2 네트워크 기초-2

오늘은 아키텍쳐를 구성하는 요소들에 대해서 학습한당. 어렵당 어려워 프록시 서버 (Procxy) 프라이버시 (Privacy) : 웹 서버에서 클라이언트의 IP를 숨길 수 있다. 암호화 (Encryption) : 웹사이트에 대한 암호화를 구현한다. (SSL) 압축 (Compression) : 서버의 응답을 압축하여 네트워크 대역폭을 줄이고 성능을 향상시킨다. 보안 (Security) : 웹서버를 보호한다. (방화벽으로 보호되는 서버와 인터페이스 가능) 로드 밸런싱 (Load Balancing): 둘 이상의 서버 간 워크로드를 공유하는 로드밸런싱 구현으로 성능이 향성되고 서버의 장애를 보완할 수 있다. 수평적 구조를 달성한다. 캐싱 (Caching) : 캐싱으로 인해 엑세스한 콘텐츠를 빠르게 제공하여 웹 서..