AWS 17

[KB IT's Your Life] 파이널 프로젝트 - 시스템 아키텍쳐 설계 (Auto Scalilng, 무중단 배포, private subnet, nat gateway)

kb 부트캠프 마지막 프로젝트가 시작했다. 배포를 시작부터 전부 하고 가고 싶어 cicd랑 배포를 전부 마무리하고 시작했다. 은행권 프로젝트이다보니, 보안을 최대한 신경써서 아키텍쳐를 구성했다. 아키텍쳐의 간단한 설명을 진행하도록 하겠다. 아키텍쳐 설명우선 우리가 돌리는 서버는 총 5개다. 메인 서버 2개카프카 서버 1개로그 전송 서버 1개터널링용 서버 1개 보안을 위해서 메인서버, 카프카 서버, 로그 전송 서버, RDS, elastic cahce는 모두 private 서브넷에 배포했다. private 서브넷은 인터넷에 연결되어 있지 않기 때문에, 외부에서 접속할 수도, 내부 트래픽을 외부로 내보낼 수도 없다.보안에 굉장히 강력한 옵션이 될 수 있다. 하지만 우리가 로컬에서 테스트할 때 RDS나 메인서버..

KB IT's Your Life 2025.07.21

[KB IT's Your Life] AWS ec2, 도커 이미지를 이용한 간단한 CI-CD 구축 (Spring Legacy)

ㅎㅇ안녕하세요, 스프링 레거시 환경에서 war 파일 was에 붙여 배포 어떻게 하냐는 문의가 많아 그냥 간단하게 정리해봅니다. 목표아주 기본적인 ci-cd를 구축해보겠습니다.vpc public subnet에 ec2를 올리고 ci-cd 작업까지 완료하는 걸 목표로 해보겠습니다. (public subnet은 아무나 접근 가능하기 때문에 보안상 좋지 않으니 추후 private으로 옮기는 것도 고려해보세요) build.gradle 파일우선 build.gradle 파일에 war 파일을 만드는 코드를 추가해줍시다. plugins { id 'java' id 'war'} 그냥 플러그인에 war 넣으면 돼요 간단하죠? 이제 도커 파일을 만들어봅시다FROM tomcat:9.0.107-jdk17-temurin#..

KB IT's Your Life 2025.07.19

[개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 2 (AWS SES로의 마이그레이션, 적절한 스레드 개수와 청크 사이즈 계산, 쿼리 최적화, 스레드 동적 생성)

https://2junbeom.tistory.com/204이전 포스트 [개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 1 (멀티 스레딩 동시성 문제)spring batch 도입현재 진행 중인 프로젝트에서 이메일을 대량으로 발송하는 기능을 개발해야했다. 대량 메일 발송 기능을 위해 spring batch 기능을 도입했다. spring batch 도입 이유는 다음과 같다.메모2junbeom.tistory.com SES 선택 이유대량 메일 발송 서비스에서 가장 유명한 서비스는 두 개가 있었다. 1. AWS SES2. SendGrid 두 개의 장단점을 비교해보자 SES장점비용 저렴 : 1000건 당 $0.1기존 배포 및 서비스를 모두 AWS에서 사용하고 있었기에 통합이 쉽고로그 관리에..

[AWS] aws 강의 섹션 23 (API GateWay)

API GateWay람다함수와 게이트웨이를 사용하면 완전히 인프라가 없는 서버리스 환경 구축이 가능하다.람다함수는 기본적으로 엔드포인트를 제공하지 않는다 때문에, 람다 함수를 호출하기 위해선 게이트웨이가 필요하다.VPC 외부에 람다함수를 두면 외부 인터넷과 통신이 가능하다는 말은, 람다함수 내부에서 외부 인터넷 호출이 가능하다는 얘기다.웹 소켓을 지원하기 때문에 실시간 스트리밍이 가능하다.버전 컨트롤이 가능하다.때문에, 다른 환경에서 운용이 가능하다.API 키를 만들어 많은 호출이 발생할 시, 쓰로틀링이 가능하다.스웨거 등을 통해 API를 빠르게 문서화 가능하다.API 게이트웨이 단에서 요청 및 응답을 변환하고 무효화 시켜, 호출이 올바른지 확인할 수 있다.SDK 및 API 규격을 생성하고 API 응답을..

AWS 2025.02.04

[AWS] aws 강의 섹션 15 (CloudFront [CDN Service])

Cloud Front콘텐츠 전송 네트워크, 즉 CDN이다.여러 엣지 로케이션에서 웹사이트의 콘텐츠를 캐시 처리해 읽기 성능을 높인다.전 세계에서 콘텐츠가 캐시 처리되기 때문에, 전 세계 사용자의 지연 시간이 줄고 사용자 경험이 향상된다.전 세계에 분포된 CDN 엣지 로케이션에서 컨텐츠가 캐시되어 읽기 성능을 높임클라우드 프론트는 전 세계 216개의 접속 지점이 있고 각각이, AWS 엣지 로케이션에 해당한다.AWS는 엣지 로케이션을 계속 추가해 사용자 경험을 향상 시키고 있다.sheild 와 web Application Firewall을 통해 디도스 공격에 대비한다. 뒤쪽에 자세히 나옴다음과 같이 엣지에 캐시된 데이터를 제공하기에 데이터가 먼 곳에 담겨있다고 하더라도 빠르게 컨텐츠를 제공할 수 있다.Clo..

AWS 2025.01.22

[개발일지] 시스템 아키텍처 설계

1차 배포를 위해 시스템 아키텍처를 설계하고 구현해봤다.  레디스는 외부 서버를 사용하기 때문에 Region 바깥에 두었다. 추가로 고려해야할 점NAT 게이트웨이는 비용이 꽤나 발생한다.비용 절감을 위해 S3에 연결할 때는 VPC 엔드포인트를 사용CloudWatch에 연결할 때는 ENI를 사용이를 통해 비용 절감을 얻을 수 있다. AWS 자격증을 빠르게 취득하고 시스템 아키텍처를 더 보완해야겠다!

[AWS] aws 강의 섹션 31 (AWS의 기타 서비스들)

AWS SES - Simple Email Service이메일을 보내는데 사용된다.SMTP 프로토콜을 사용하며, AWS SDK로 이메일을 보낼 수 있다.여러 서비스와 통합이 가능하다.S3SNSLambda이메일을 발신, 수신하려면 IAM이 필요한데, IAM과도 통합이 되어 있다.OpenSearch ServiceElasticSearch의 후속작이다.다이나모 DB에서 인덱스나 기본키를 이용해서 데이터를 쿼리할 수 있다.하지만 opensearch를 사용하면 이부만 매칭되어도 모든 필드를 검색할 수 있다.예를 들어서 TAVE를 검색하고자 할 때, 기존 다이나모 디비는 정확히 매칭되는 키를 사용해서 TAVE 값을 가져와야 했다면,openSearch는 TA만 검색해도 TAVE를 가져올 수 있다는 의미이다.검색 뿐만 아..

AWS 2025.01.02

[AWS] aws 강의 섹션 30 (KMS, SSM Parameter Store, CloudHSM, Nitro Enclaves)

Encryption i flight (TLS / SSL)암호화를 해서 전송하고, 수신측에서 받은 후 디코딩을 하는 방식데이터를 암호화 하기 위해 TLS 인증서가 사용된다 (HTTPS)중간자 공격을 방어하기 위해 암호화를 통해 데이터를 전송한다.전송을 목표로하는 대상 서버만이 데이터를 해독할 수 있도록 한다. Server-side encryption서버에서 수신한 데이터를 암호화 시켜 저장하는 것이다.클라이언트에게 송신하기 전 디코드를 진행하고 전송한다.보통 키를 사용해 암호화와 디코딩 작업이 일어난다.서버는 해당 키에 접근이 가능해야한다. Client-side encryption데이터가 클라이언트 측에서 암호화, 해독이 이뤄진다.서버는 이 데이터를 해독할 수 없어야 한다.마찬가지로 키를 사용해 암호화한다..

AWS 2024.12.26

[AWS] aws 강의 섹션 29 (고급 IAM 정책)

AWS STS - Security Token ServiceSTS는 임시 자격 증명을 생성해주는 서비스다. 이를 통해 최대 1시간 유효한 권한을 얻어 AWS 리소스에 액세스할 수 있다.여러 가지 STS 관련 API를 알아보도록 하자.AssumRole: 다른 AWS 계정에 있는 Role을 빌려온다.내 계정 또는 다른 계정에서 특정 권한이 있는 역할을 수행하고 싶을 때 사용한다.AssumeRoleWithSAML: 사용자가 SAML로 로그인 한 경우 사용자에게 임시 보안 인증을 부여한다.AssumeRoleWithWebidentity: 사용자가 소셜로그인을 통해 로그인 할 경우 Role을 반환한다.요즘엔 잘 사용하지 않고, 대신 cognito를 이용한 로그인을 사용한다고 한다.GetSessionToken: 사용자..

AWS 2024.12.18

[AWS] aws 강의 섹션 28 (Step Function, AppSync, Amplify)

AWS Step Functions스텝 펑션은 특정 워크 플로우를 설계하고 해당 워크 플로우를 aws의 리소스와 연결시켜 자동으로 워크 플로우를 실행하도록 도와주는 도구다.한 워크플로우 당 한 개의 상태 관리 머신이 할당 될 수 있다.예시: 이미지 처리 워크플로우이미지를 S3에 업로드.업로드된 이미지를 Lambda로 처리 (크기 변경, 필터 적용 등).처리된 이미지를 S3에 저장.처리가 완료되었다는 알림을 사용자에게 보냄.이러한 워크 플로우를 정의하고 워크 플로우대로 리소스를 실행 시키도록 도와준다. Json으로 작성된다.워크 플로우를 시각화해서 시각적으로 수행이 어디까지 진행되는지 확인할 수 있다.스텝 펑션의 시작은 SDK 호출, API 게이트웨이, 이벤트 브릿지 등등으로 시작할 수 있다.Step Fun..

AWS 2024.12.05