엔티티를 저장한 후, 그 정보를 이메일로 보내는 기능을 구현하였습니다. 이메일을 전송하는 작업은 시간이 오래 걸리는 작업이므로, 이를 비동기적으로 처리하기 위해 메세지 큐를 사용하였습니다. 저희 팀은 AWS 의 SQS(Simple Queue Service) 를 사용하고 있습니다. 간단하게 예시를 들어보겠습니다. 우선 메세지 전송 처리부터 구현해보겠습니다.@Transactionalfun create(seller: Seller, inquiry: Inquiry): InquiryHistory { val inquiryHistory = inquiryRepository.save(InquiryHistory( inquiry = inquiry, actionAt = ZoneDateTime.n..
프로젝트를 진행할 때 변경한 코드가 올려져 있는 Github Repository로 부터 서버에서 pull해서 build하고 deploy하는 과정이 너무 번거로웠다. 나는 이러한 문제를 해결하기 위해서 Github Actions를 사용하여 Repository에 특정한 이벤트(나와 같은 경우 pull request)가 발생하면 자동으로 빌드하고 빌드된 프로젝트 파일을 AWS S3에 올리도록 하였다(CI 과정). 그 후는 Github Actions가 CodeDeploy에게 배포 명령을 내리고 AWS Code Deploy Agent가 appspec.yml의 절차를 따라 배포 서버(EC2)에 배포하는 과정을 거친다(CD 과정). 이번 포스팅은 GithubActions로 S3에 저장된 빌드 파일은 EC2 인스턴스로..
프로젝트를 진행할 때 변경한 코드가 올려져 있는 Github Repository로 부터 서버에서 pull해서 build하고 deploy하는 과정이 너무 번거로웠다. 나는 이러한 문제를 해결하기 위해서 Github Actions를 사용하여 Repository에 특정한 이벤트(나와 같은 경우 pull request)가 발생하면 자동으로 빌드하고 빌드된 프로젝트 파일을 AWS S3에 올리도록 하였다. 그 후는 AWS Code Deploy가 배포 서버(EC2)에 배포하는 과정을 거친다. 이번 포스팅은 GithubActions으로 Spring Boot 프로젝트 CI 적용하는 부분을 작성하였다. Github Actions 구성요소 Github Actions Workflow의 각 job은 가상 머신 runner 또는..
깃허브에 데이터베이스의 암호와 같은 민감한 정보를 올리면 위험하기에 민감한 정보는 따로 저장해야 한다고 한다. 나는 AWS Parameter Store에 저장하여 불러오는 방식을 택하였다. Spring Cloud 버전 확인 자신의 Spring Boot 프로젝트 버전과 맞는지 확인하고 공식 문서에서 자신의 버전과 맞는 Spring Cloud를 결정해야 한다. 이 글은 다음과 같은 환경에서 진행했다. SpringBoot : 2.7.12 Java : 11 SpringCloud : 2021.0.5 요약 1. Spring Boot 프로젝트 설정 2. AWS Parameter store 설정 3. 콘솔에서 AWS Parameter Store 불러오기 1. Spring Boot 프로젝트 설정 1. build.grad..
반복된 과정을 자동화하는 CI/CD 개발자가 코드를 변경할 때 마다 빌드, 테스트, 통합, 배포하는 과정을 반복하게 된다. 반복된 과정을 매번 하는 것은 비효율적이기 때문에 자동화하는 것이 좋다. 코드를 변경하는 것은 매번 달라지기 때문에 자동화가 어렵지만 그 외 과정은 적절한 설정을 하게 되면 자동화가 가능하다. 즉, 빌드, 테스트, 통합, 배포하는 과정을 자동화하는 것을 CI/CD라고 한다. CI와 CD는 다른 과정이다. CI(Continuous Integration, 지속적 통합)란? 빌드 Build → 테스트 Test → 통합 Merge → 배포 Deploy 단순하게 배포하기 전까지의 과정이다. 개발자는 배포 전에 코드를 여러 브랜치에서 통합하는 과정을 거친다. 배포 전까지의 과정이 여러 코드를 ..
요약 1. EC2 인스턴스 생성 2. SSH 프로토콜로 EC2 인스턴스 접속 1. EC2 인스턴스 생성 1. EC2 > 인스턴스 > 인스턴스 시작 버튼을 눌러 인스턴스를 생성한다. 2. EC2를 식별할 수 있는 이름 및 태그를 작성한다. 3. 생성하려는 EC2의 OS 이미지와 버전 인스턴스 유형을 선택한다. OS 이미지는 Ubuntu 20.04 LTS를 사용하였다. 프리티어로 사용하는 경우 프리티어 사용 가능한지 여부를 꼭 확인해야 한다. * 주의 : CodeDeploy를 EC2에 설치해야 한다면 OS 이미지 및 버전을 꼭 확인해야 한다. 처음에 Ubuntu 22.04 LTS를 사용했다가 Code Deploy가 설치되지 않아 처음부터 다시 생성했다. 인스턴스 서버 크기도 마찬가지로 t2.micro가 프리..
S3 버킷에 배포된 정적 웹 사이트에 HTTPS를 적용하고, Mixed Content Error를 직면하였다. 간단히 말해 HTTPS 적용된 정적 웹 사이트에서 HTTPS가 적용되지 않은 톰캣 서버에 요청했기 때문에 발생한 문제이다. 이를 해결하기 위해 Application Laod Balancer를 이용하여 EC2 인스턴스에 배포한 톰캣 서버에 HTTPS로 접근하기로 하였다. Application Load Balancer Elastic Load Balancing은 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산한다. 등록된 대상의 상태를 모니터링하면서 상태가 양호한 대상으로만 트래픽을 라우팅한다. Elastic Load Balanci..
S3웹사이트 엔드포인트에 HTTPS를 적용하려고 하였으나 S3 웹 사이트 엔드포인트는 HTTPS를 지원하지 않는다. AWS는 배포한 웹사이트를 더 안전하고, 보안을 강화하기 위해서 CloudFront를 사용하여 HTTPS를 적용하는 방법을 안내하고 있다. CloudFront Cloud Front는 AWS의 CDN(Content Delivery Network)서비스이다. 지리적으로 분산된 서버들을 연결한 네트워크(CDN)에서 Cloud Front는 클라이언트의 콘텐츠 요청으로 Origin Server에서 받아온 콘텐츠를 Edge Location에 캐싱하고 이후 같은 요청이 들어왔을 때, 그 캐싱해둔 것을 사용자에게 제공한다. 이러한 Cloud Front의 특성을 이용하여 Cloud Front Edge Se..
MFA란? Multi-Factor Authentication 약어로, 사용자 이름과 암호 외에 보안을 강화하는 수단 AWS 계정 및 계정에 속하는 개별 IAM 사용자에 대해 AWS MFA를 활성화할 수 있다. 루트 계정에는 MFA를 구성하여 AWS 리소스를 보호하는 것이 좋다. 루트 계정에 MFA 적용하기 루트 계정에 MFA를 활성화하기 위해 보안 토큰 기반의 가상 MFA 어플리케이션(Google Authenticator)를 사용하였다. 루트 계정에 로그인하여 진행한다. 1. IAM 서비스 대시보드에 루트 사용자에 대해 [MFA 추가] -> [MFA 할당] 버튼을 누른다. 2. MFA 디바이스를 다음과 같이 선택한다. 3. 스마트폰에서 Google Authenticator를 설치 [바코드 스캔]을 이용하..
IAM 이란? Identity and Access Management의 약어로 AWS 리소스에 대한 접근을 안전하게 제어하게 하는 AWS 서비스이다. AWS 계정을 만들고 생성된 사용자를 루트 사용자라고 하며, 계정 생성에 사용한 이메일 주소와 암호로 로그인을 하여 액세스한다. 하지만, AWS에서는 작업시에 루트 사용자를 사용하지 않는것을 추천하고 있다. 즉, IAM 계정을 생성해서 작업을 하기를 권고한다. IAM의 주요 기능은 다음과 같다. 1. AWS 계정에 대한 공유 엑세스 : 암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여할 수 있다. 2. 세분화된 권한 : 다른 리소스에 대해 다른 사람에게 다른 권한을 부여할 수 있다. 나는 IAM ..
- Total
- Today
- Yesterday
- 자바
- 영속성 컨텍스트
- appliationeventlistener
- CI와 CD의 차이
- LeetCode
- 프로그래머스
- 영속 상태
- Spring
- 네트워크
- Spring Boot
- persistencecontext
- 정렬
- java
- Hibernate
- Route53
- githubactions
- acm
- EC2
- 트랜잭션
- entitylisteners
- springboot
- CI/CD
- 지연 대기열
- fetchcount()
- CodeDeploy
- IAM
- DevOps
- network
- JPA
- aws
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |