# DevNote (7) # DevNote/GitHub Github Action 으로 CI/CD 구성하기 (깃허브 액션 튜토리얼) 깃허브 액션이란? 요약 깃허브 액션(Github Actions)은 일종의 훅 서비스입니다. 특정 레포지터리(또는 브랜치)에 푸시 또는 풀 리퀘스트와 같은 특별한 이벤트가 발생하면 미리 작성된 워크플로우를 도커 컨테이너에서 실행시킬 수 있습니다. 실행단위 액션을 구성하는 요소들을 위에서부터 훑어보겠습니다. 워크플로우 (Workflow) 가장 최상층에 위치한 개념이며, 모든 명령어의 흐름을 통틀어서 워크플로우라고 합니다. 특정 이벤트가 발생하면 명령어의 흐름(워크플로우)이 실행된다라고 이해하시면 됩니다. 아래의 사진 하나가 단일 워크플로우입니다. 특정 이벤트가 발생해야 워크플로우가 실행된다는 사실을 떠올려보면, 감지할 이벤트의 목록은 워크플로우의 속성이라는 것을 알 수 있습니다. 즉, 감지할 이벤트의 목록은.. 2020. 8. 1. 15:20 # DevNote HTTP 메세지와 연관지어 Axios 사용법 이해하기 Axios란? Axios는 자바스크립트 위에서 동작하는 HTTP(S) Request Library입니다. 자바스크립트 위에서 돌아간다는 것은 프론트엔드와 백엔드에서도 사용할 수 있다는 것이므로, 한 번 사용법을 익혀두면 HTTP 요청에 대해서는 더 이상 고민할 것이 없어집니다. 다만, 사용법을 아는 것과 사용법을 이해하는 것은 차이가 꽤 크죠. 여기서는 HTTP 메세지 구조와 연관지어 Axios의 사용법을 이해하여 보겠습니다. Request 요청 HTTP 요청 메세지의 첫 번째, 두 번째 라인은 다음 정보를 포함하고 있어야 합니다. 요청 메서드 요청 경로명 호스트 주소 GET : GET /robots.txt HTTP/1.1 Host: naver.comawait Axios({ method: "GET", u.. 2020. 7. 10. 23:40 # DevNote/AWS [ELB] 로드 밸런서를 사용하여 EC2에 HTTPS로 연결하기 개요 먼저 단언하자면 EC2 콘솔을 통해 SSL 인증서를 적용할 수 있는 방법은 없습니다. 특정 인스턴스에 SSL 인증서를 설치하기 위해서는 수동으로 설치하는 방법밖에 없죠. 그러나 이 방식은 인증서의 유효기간에 대한 고민이 함께 따라오기 때문에 적지않은 수고가 함께 동반됩니다. 😟 하지만 로드 밸런서를 함께 사용하면 인스턴스에 인증서를 설치하지 않고도 HTTPS연결을 할 수 있습니다. ACM을 통해 발급받은 인증서를 사용한다면 재발급 및 갱신까지 알아서 해주기 때문에 더욱 편리하죠. 백그라운드 이 마법같은 일은 로드 밸런서가 인증서를 가지고 있기 때문에 가능합니다. EC2에는 인증서가 설치되지 않아 로드 밸런서와 EC2 사이에 일반 연결이 수립되었지만 로드 밸런서는 인증서를 가지고 있기 때문에 사용자와.. 2020. 5. 18. 21:38 # DevNote/AWS [ECS] 도커를 통해 ECS EC2에 배포하기 개요 Elastic Container Service는 컨테이너들의 헬스를 체크하고 일정수준 이상의 컨테이너들이 동작하도록 도와주는 서비스이며 쿠버네티스의 아마존 버전이라고 생각하면 얼추 맞습니다. 이번 포스팅에서는 Docker 이미지를 사용하여 EC2를 사용한 ECS에 배포해보겠습니다. 시작유형 아마존에서는 2가지 유형으로 ECS를 제공하고 있습니다. Fargate와 EC2가 바로 그것이죠. EC2 이 유형은 도커 컨테이너가 EC2 컨테이너 위에서 작동합니다. 우리가 구매한 EC2에 대해 일정 이상의 컨테이너가 돌아가도록 관리하는 방식으로 이루어집니다. 프리티어 사용자라면 1개의 t2 인스턴스는 무료로 사용할 수 있습니다. Fargate 이 유형은 Lambda와 매우 비슷합니다. 아마존이 가지고 있는 F.. 2020. 5. 17. 19:58 # DevNote/AWS [CloudFront, Lambda@Edge] Next를 serverless하게 배포하기 NextJS Serverless Component 기존의 방식 (9.0 이전) 기존에는 Next를 구동하려면 AEC2같은 항상 실행중인 서버가 필요했습니다. 어떻게 하면 서버리스하게 만들 수 있을까? 라는 생각에서 serverless-nextjs-plugin같은 패키지들이 만들어지기도 했죠. 하지만 플러그인을 사용하는 방식은 번거롭고 람다 핸들러 스타일의 코드를 추가로 작성해야하는 문제점이 있습니다. // Lambda Handler Style... const compat = require("next-aws-lambda"); const page = require(".next/serverless/pages/somePage.js"); module.exports.render = (event, context, c.. 2020. 5. 17. 16:05 # DevNote/AWS [Lambda] serverless와 typescript로 시작하는 Lambda AWS까지 배우기엔 너무 힘들어요 Lambda는 매력적인 서비스입니다. 실제 사용된 만큼만 과금되기 때문에 사용자가 없는 시간에는 요금이 절감되고. 아마존이 가진 pool에 배포된 code 넣어 실행하는 형태이기 때문에, 사용자가 급증해도 유연한 대처가 가능하기 때문이죠. 다만 Lambda 혼자서는 제 역할을 할 수 없는데, 실제 서비스를 제공하려면, Lambda만 설정해야 될 것이 아니라, Lambda Apllication, API Gateway와 같은 부가적인 설정도 이루어져야 합니다. 이걸 프로그래머가 혼자 다 설정해야 한다니... 코딩하는걸 더 좋아하는 사람에겐 생지옥이 따로 없습니다. 효과적인 대안이 어디 없을까요? serverless 이런 경우에는 serverless 프레임워크가 좋은 선택일 .. 2020. 5. 15. 15:07 # DevNote/AWS [RDS] PostgreSQL 외부접속 허용하기 인바운드 보안규칙 수정 기본적으로 AWS 서비스는 보안규칙에 적혀있지 않은 인바운드 트래픽을 차단하고 있습니다. 먼저 자신의 IP와 포트번호를 인바운드와 아웃바운드에 각각 등록해야 합니다. 공개접근 허용하기 보안규칙과 별도로 Public Access 여부가 존재하는 경우가 있습니다. 아래 사진에서 Public Accessibility를 Yes로 변경해야 합니다. RDS 인스턴스 수정에서 변경할 수 있습니다. 액세스키 등록하기 아마존 서비스를 프로그램에서 사용하기 위해서는 공개 액세스 키와 비밀 액세스 키가 컴퓨터 자체에 설정되어 있거나, 파일의 형태로 저장되어 있어야 합니다. 액세스 키는 보안 자격 증명에서 발급받을 수 있습니다. 이렇게 발급받은 액세스 키는 AWS 명령행 인터페이스를 통해 컴퓨터에 설정.. 2020. 3. 17. 21:32 이전 1 다음