본문 바로가기

전체 글151

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.
Testcontainers에서 MySQL 사용해보기 (테스트 환경에서 자동으로 MySQL 컨테이너 띄우고 내리기) 이 글은 이전 글 Testcontainers 사용하기까지 에서 이어졌습니다. 잘못된 내용이나 의견 있다면 편하게 말씀해주세요 🙏🏻 Testcontainers 간단 소개 Testcontainers 라이브러리는 도커 컨테이너를 자바 코드로 조작할 수 있다. 다시 말해 자바 코드로 특정 도커 이미지를 실행하고 끌 수 있다. 일반 도커 컨테이너와 마찬가지로 네트워크 통신, 스토리지 조작, 환경변수 설정을 할 수 있다. 이를 DB 테스트 환경에 도입하면 다음과 같다. 인메모리 DB로 테스트하는 것이 아닌 실제 운영 DB와 동일한 환경을 외부 인스턴스에 띄우지 않고 로컬 도커 컨테이너에서 테스트할 때마다 DB 컨테이너를 띄우고 테스트가 끝나면 컨테이너를 내리는 작업을 자동화할 수 있다. CI 환경에 도커만 설치되어.. 2022. 6. 23.