AWS

    [AWS] RI & Savings Plan로 AWS 비용 절감

    [AWS] RI & Savings Plan로 AWS 비용 절감

    최근 운영 중인 서비스를 배포 중인 AWS 계정의 프리 티어가 종료되면서 AWS 비용을 절감해야할 일이 생겼다. 이것저것 알아보던 도중 RI(예약 인스턴스)와 Savings Plan를 알게 되었다. 두 기능 모두 EC2나 RDS 인스턴스에 대해 사용시간 만큼 비용을 지불(온디맨드)하는 것이 아닌, 몇 년치를 한 번에 결제해서 온디맨드에 비해 더 저렴한 가격에 구매하는 방법이다. 현재 내가 사용 중인 AWS 클라우드 아키텍처다. 여기서 나는 EC2 인스턴스 3개(배포용 2개 + 테스트용 1개)에 Savings Plan을, RDS 인스턴스 1개에 대해 RI를 적용했다. RI 예약 인스턴스(Reserved Instance)라고 한다. 1년 혹은 3년 동안 EC2 혹은 RDS 인스턴스의 특정 유형(ex. t2...

    [AWS] RDS Connection timed out 연결 오류 해결 방법

    [AWS] RDS Connection timed out 연결 오류 해결 방법

    RDS를 여러번 다뤄봤지만 같은 설정에 대해서도 계속 연결이 되지 않아 많이 애를 먹었다. EC2가 아닌 Mysql workbench 혹은 Datagrip과 같이 로컬에서 RDS에 접속하고 싶은데, "Connection timed out" 오류가 계속해서 발생했다. 퍼블릭 액세스 + 보안그룹 인바운드 설정까지 했는데 로컬에서 연결이 되지 않는다면 이번 방법을 사용해보자. 먼저 확인해볼 것 앞에서 잠깐 언급하긴 했지만 로컬에서 연결하기 위해서는 데이터베이스 생성 시 퍼블릭 엑세스 설정은 반드시 해줘야 한다. 또한, 보안 그룹의 인바운드 규칙도 확인해보자. 이렇게 기존 EC2를 위한 인바운드 규칙말고 로컬에서 사용하기 위한 규칙을 넣어줘야 한다. 0.0.0.0/0은 모든 사용자가 해당 RDS에 접근할 수 있..

    [CI/CD] Gitlab + Jenkins + Nginx + Docker + AWS EC2 - 무중단 배포

    [CI/CD] Gitlab + Jenkins + Nginx + Docker + AWS EC2 - 무중단 배포

    회사 프로젝트에 CI/CD를 적용할 일이 생겼다. 이전에 Github + Jenkins + AWS CodeDeploy를 사용해 CI/CD를 적용한 적이 있었는데, 회사 사정 상 다른 방식으로 CI/CD를 적용해야 하는 상황이다. 따라서, Gitlab + Jenkins + Nginx + Docker + AWS EC2를 사용한 CI/CD 적용 방법을 기록한다. CI/CD 구조는 다음과 같다. 1. Gitlab 저장소에 Push 한다. 2. webhook을 통해 Jenkins에서 Gitlab 레포지토리에 접근한다. +) Gitlab과 Jenkins는 회사 서버에서 도커 컨테이너로 설치했다. 나는 회사 프로젝트여서 회사 서버에 설치한 것이지, EC2 등 각각 상황에 맞는 환경에 젠킨스를 설치하면 된다. 3. J..

    [Spring] AWS S3 압축 파일 풀어서 업로드하기 - TransferManager

    [Spring] AWS S3 압축 파일 풀어서 업로드하기 - TransferManager

    이전에 Spring을 통해 S3 파일을 압축해서 다운로드하는 글을 작성했는데, 많은 도움이 되었다. 2022.08.05 - [java/spring] - [Spring] AWS S3 파일 압축해서 다운로드 - 여러가지 방법 비교분석 [Spring] AWS S3 파일 압축해서 다운로드 - 여러가지 방법 비교분석 이전에 Spring을 통해 S3에서 파일을 다운로드하는 API를 개발한 적이 있었다. 2021.08.05 - [java/spring] - [Spring] AWS S3에서 Spring Boot로 파일 다운로드 [Spring] AWS S3에서 Spring Boot로 파일 다운로드.. gksdudrb922.tistory.com 이번에는 반대로 압축파일을 업로드하면 S3에 풀어서 저장되는 API를 구현하고자..

    [Spring] AWS S3 파일 압축해서 다운로드 - 여러가지 방법 비교분석

    [Spring] AWS S3 파일 압축해서 다운로드 - 여러가지 방법 비교분석

    이전에 Spring을 통해 S3에서 파일을 다운로드하는 API를 개발한 적이 있었다. 2021.08.05 - [java/spring] - [Spring] AWS S3에서 Spring Boot로 파일 다운로드 [Spring] AWS S3에서 Spring Boot로 파일 다운로드 프로젝트 중 AWS S3에서 특정 버킷의 파일을 다운로드 받아야 하는 상황이 생겨 기록을 한다. build.gradle - 의존성 추가 dependencies { ... implementation 'org.springframework.cloud:spring-cloud-starter-a.. gksdudrb922.tistory.com 그러나 이 방법은 단일 객체 하나를 다운받을 수 있었는데, 이번에는 디렉토리를 포함해서 대용량 파일을 ..

    [Spring] AWS S3 객체 삭제

    기본 세팅 먼저 S3 버킷에 대한 퍼블릭 엑세스 설정이 필요하다. 해당 글을 참고하자. 2022.07.25 - [aws] - [AWS] S3 버킷 퍼블릭 엑세스 설정 [AWS] S3 버킷 퍼블릭 엑세스 설정 AWS S3 버킷을 퍼블릭하게 열어두고 사용할 때가 많다. 이번에는 S3 퍼블릭 엑세스에 대한 기본 세팅을 설명한다. 퍼블릭 엑세스 차단 기본적으로 아무 설정 없이 버킷을 생성하면 모든 퍼블릭 엑 gksdudrb922.tistory.com 또한, Spring Boot에서 S3 설정 및 접근에 대한 인증 키를 입력해야 한다. 해당 글을 참고하자. 2022.07.25 - [java/spring] - [Spring] AWS S3 접근 [Spring] AWS S3 접근 라이브러리 추가 implementati..

    [AWS] RDS "Too many connections"

    [AWS] RDS "Too many connections"

    RDS 운영 중 다음과 같은 메시지가 발생하면서 RDS가 먹통이 될 때가 있다. "Too many connections" 프로젝트 배포시에 해당 오류가 발생하거나 RDS를 이용하지 못하게 되는 경우 해결 방법을 알아보자. 결론적으로 말하면 max_connections와 wait_timeout 값을 조정하면 된다. 해당 값들은 AWS Console에서 변경 가능하다. max_connections: 클라이언트가 동시에 접속할 수 있는 커넥션 수 wait_timeout: 사용하지 않는 커넥션이 닫히는 데까지 서버가 대기하는 시간 AWS Console -> RDS -> 파라미터 그룹 으로 이동하자. 파라미터 그룹은 max_connections와 같은 DB 관리에 필요한 파라미터들을 모아놓은 그룹이다. 처음엔 d..

    [Spring] AWS S3 객체 전체 조회 or 해당 level만 조회

    기본 세팅 먼저 S3 버킷에 대한 퍼블릭 엑세스 설정이 필요하다. 해당 글을 참고하자. 2022.07.25 - [aws] - [AWS] S3 버킷 퍼블릭 엑세스 설정 [AWS] S3 버킷 퍼블릭 엑세스 설정 AWS S3 버킷을 퍼블릭하게 열어두고 사용할 때가 많다. 이번에는 S3 퍼블릭 엑세스에 대한 기본 세팅을 설명한다. 퍼블릭 엑세스 차단 기본적으로 아무 설정 없이 버킷을 생성하면 모든 퍼블릭 엑 gksdudrb922.tistory.com 또한, Spring Boot에서 S3 설정 및 접근에 대한 인증 키를 입력해야 한다. 해당 글을 참고하자. 2022.07.25 - [java/spring] - [Spring] AWS S3 접근 [Spring] AWS S3 접근 라이브러리 추가 implementati..