본문 바로가기

전체 글172

Terraform(테라폼)을 활용한 Heroku(헤로쿠) app 프로비저닝 하기 소스코드가 들어있지 않은 인프라만 구성된 헤로쿠 app 을 만든다고 했을 때 간단하게 두 가지 방법을 떠올릴 수 있다. 방법 1 : heroku 웹사이트에 들어가 버튼 클릭으로 앱을 만든다. 방법 2 : heroku cli를 설치하여 터미널에서 명령으로 앱을 만든다. 위 두 방법 말고도 다른 방법이 있다. 테라폼을 활용하는 것이다. +a) 헤로쿠에 앱 하나 만드는 일은 간단한 작업이라 테라폼을 사용해야 하는가 의구심이 들었지만 연습차원에서 즐거운 경험이었다. 이전글 2022.07.11 - [👾 Server/Terraform] - Terraform(테라폼)이란? 간단 사용기 에서 알아본 테라폼을 적용해보고 있다. Terraform(테라폼)은 헤로쿠를 지원하고 있다. (공식 문서 : Heroku Provid.. 2022. 8. 1.
Terraform(테라폼)이란? 간단 사용기 Terraform(테라폼)이란 테라폼이란 하시코프에서 Go 언어로 개발한 오픈소스 IaC(Infrastructure as Code) 도구이다. IaC는 코드로 인프라를 관리한다는 개념으로 테라폼에서는 HCL(Hashicorp Configuration Language, 하시코프 설정 언어)를 사용해 클라우드 리소스를 선언한다. AWS가 자체적으로 만든 AWS CloudFormation의 경우 AWS만 지원하지만 테라폼은 AWS, GCP(구글), Azure(MS), Naver Cloud 등 같은 주요 클라우드 서비스들을 프로바이더로 제공한다. 다시 말해 테라폼만으로 멀티 클라우드 리소스들을 선언하고 코드로 관리하는 것이 가능하다. 테라폼을 활용한 AWS 인프라스트럭처 프로비저닝 순서 1단계 : AWS 계정,.. 2022. 7. 11.
VPC Endpoint(엔드포인트) 이전 글 2022.03.31 - [👾 Server/☁️AWS] - AWS - VPC(Virtual Private Cloud)이란? : AWS에서 독립된 가상 네트워크 만들기에 이어 VPC 고급, 엔드 포인트에 대해 알아보고자 한다. VPC Endpoint(엔드포인트)란? 사용자가 생성한 VPC에서 AWS 퍼블릭 서비스와 통신 하거나 다른 VPC 통신이 필요한 경우 일반적으로 외부 인터넷 구간(퍼블릭 네트워크)를 통해 통신이 이루어진다. 하지만 보안과 직결된 통신에서는 외부 인터넷 구간 없이 통신이 필요할 때가 많다. 이때 VPC 엔드포인트를 사용하면 된다. VPC 엔드포인트란 AWS의 퍼블릭 서비스나 직접적으로 생성한 AWS 서비스에 대해 외부 인터넷 구간을 통한 접근이 아닌 직접적으로 접근할 수 있는 .. 2022. 7. 11.
[서버 장애] HTTPS -> HTTP 통신 불가(웹 브라우저의 Mixed Content 차단) 사건의 개요 토이 프로젝트(FE 서버, BE 서버) 진행 중에 문제가 발생했다. 프론트 서버 https 배포, 백엔드 서버 http 배포 후 프론트 -> 백엔드 요청 시 Midxed Content 차단됐다. - 프론트(react) 배포 : AWS CloudFront + S3 사용한 HTTPS 지원 - 백엔드(spring) 배포 : AWS ec2 DNS 사용 X, HTTP 만 지원 사건의 근본 원인 웹브라우저(크롬, 파이퍼폭스 등) 자체에서 Mixed Content 차단하여 HTTP 서버인 백엔드로 부터 API를 받을 수 없었다. Mixed Content(혼합 콘텐츠)란 보안되지 않은 HTTP 프로토콜을 사용하여 리소스 요청하는 경우 해커(공격자)가 네트워크 연결을 도청 하고 중간자 공격(man-in-th.. 2022. 7. 2.
Git Submodules를 활용한 secret, config 파일 관리, 배포 (feat. SpringBoot, GitHub Actions) 잘못된 내용이나 다른 의견 있다면 편하게 말씀해주세요 🙏🏻 이전 글 secret, config 파일 관리 방법 소개(feat. SpringBoot의 application.*) 에서 소개한 방법 3 : Git Submodules를 활용한 방법 예제를 소개한다. Git Submodules Git Submodules란 저장소 안에 다른 저장소를 원하는 디렉토리를 복제하는 기능이다. 예를 들어 A,B 프로젝트에서 공통되게 사용하는 모듈(라이브러리, 설정 값 등) C가 있다고 하자. A,B,C 모두 저장소이다. 이때 A, B 저장소에 C 소스 코드가 중복될 수 있다. 이를 A,B 저장소에 C를 서브 모듈로 두어 공통되게 사용할 수 있다. C가 수정되면 A,B 모두 수정된 코드를 사용할 수 있다. (생활 코딩 : .. 2022. 7. 2.
secret, config 파일 관리 방법 소개(feat. SpringBoot의 application.*) 잘못된 내용이나 다른 의견 있다면 편하게 말씀해주세요 🙏🏻 들어가며 SpringBoot 프로젝트를 GitHub public repo에서 작업 후 배포한다고 가정하자. SpringBoot의 설정 파일은 application.* 또는 DB 초기 설정을 위한. sql 등이 있다. application.* 파일에는 DB 접속 정보(url, username, password)나 secret key 관리 등 많은 파일이 들어있다. 이를 public repo에 공개하면 문제가 발생할 수 있다. 외부 노출을 막고 배포하는 방법을 알아보자 방법 방법 1 : 로컬 개발 환경에서 application.* 설정 파일 그대로 사용하고 외부 저장소 노출을 막기 위해. gitignore 설정, 배포 시 application.yml.. 2022. 7. 1.