Spring
-
Spring boot Gitlab CI/CD 구축 (1)Spring 2023. 9. 10. 19:14
개발 프로세스에서 CI/CD(Continuous Integration/Continuous Deployment)는 애플리케이션 개발과 배포의 효율성을 높이고 소프트웨어 개발 수명 주기를 단축하는 중요한 구성 요소입니다. 이 포스팅에서는 AWS EC2 인스턴스에 GitLab Runner를 설치하여 GitLab CI/CD 파이프라인을 구축하고, Spring Boot에서 CI/CD 프로세스를 구현하는 방법을 알아보겠습니다. 💡 CI/CD(Continuous Integration/Continuous Deployment)란? CI/CD는 개발자 및 개발 팀이 소프트웨어를 더 신속하게 개발하고 배포할 수 있도록 도와주는 소프트웨어 개발 및 배포 프로세스의 조합입니다. 이를 통해 코드 변경사항이 자동으로 통합되고 테스..
-
[AWS + Spring] Spring Boot에서 S3와 CloudFront를 이용한 파일 업로드 (2)Spring 2023. 9. 3. 19:04
이전 포스팅에서 AWS CloudFront 및 S3를 생성하고, 정책을 생성해서 적용까지 완료 했습니다. 해당 포스팅에서는 Spring Boot 설정을 하고 Presigned URL 생성 API 까지 구현 해보겠습니다. AWS CloudFront 및 S3 및 정책 생성은 이전 포스팅을 참고 하시길 바랍니다. https://developer-been.tistory.com/36 [AWS + Spring] Spring Boot에서 S3와 CloudFront를 이용한 파일 업로드 (1) Spring Boot 애플리케이션에서 파일 업로드 기능을 구현하고, 이를 AWS S3와 CloudFront를 활용하여 파일을 안정적으로 저장하고 배포하는 방법을 설명합니다. 이를 통해 애플리케이션의 성능과 안정성 develope..
-
[AWS + Spring] Spring Boot에서 S3와 CloudFront를 이용한 파일 업로드 (1)Spring 2023. 8. 5. 18:14
Spring Boot 애플리케이션에서 파일 업로드 기능을 구현하고, 이를 AWS S3와 CloudFront를 활용하여 파일을 안정적으로 저장하고 배포하는 방법을 설명합니다. 이를 통해 애플리케이션의 성능과 안정성을 향상시키며, 사용자 경험을 개선할 수 있습니다. Spring Boot Server에서 미리 서명된 Presigned URL을 생성하고 Client단에서 별도의 권한 없이도 파일을 업로드 할 수 있습니다. 💡 CloudFront와 S3를 연결 하는 이유는 아래와 같습니다. 1. 빠른 파일 배포 - CloudFront는 전 세계에 분산된 엣지 로케이션(Edge Location)을 가지고 있으며, 사용자에게 가까운 엣지 로케이션에서 콘텐츠를 제공합니다. 이로 인해 파일을 빠르게 다운로드할 수 있으며..
-
[Spring] Scheduler Lock(SchedLock) - Multiple Scheduler Instance 방지Spring 2023. 2. 22. 08:46
Scheduler를 사용하려고 할때, 서버가 Scailing 되는 환경이라면 Multiple Scheduler Instances가 발생하기 때문에 고민을 해봐야 한다. 그리고 이를 해결하기 위한 방법은 2가지 정도로 살펴볼 수 있다. 첫 번째로는, Quartz와 같은 분산 스케줄링 프레임워크를 사용하여 여러 인스턴스에서 스케줄러 실행을 조정할 수 있다. 이렇게 하면 새 인스턴스가 환경에서 추가되거나 제거되더라도 한 번에 하나의 스케줄러 인스턴스만 실행되도록 할 수 있다. 두 번째로는, 한 번에 하나의 스케줄러 인스턴스만 실행되도록 할 수 있다. 스케줄러의 각 인스턴스가 예약된 작업을 실행하기 전에 공유 리소스에 대한 잠금을 획득하도록 함으로써 이를 수행할 수 있다. 스케줄러의 다른 인스턴스가 잠금을 이미..
-
[AWS + Spring] EB + ElastiCache Redis + Spring Boot 연동 (2)Spring 2023. 1. 15. 22:03
이전 포스팅에선 Elasticache Redis Cluster를 생성하고 bastion host를 통해 EC2에서 연결까지 확인 해봤다. 이번 포스팅에선 Spring Boot에 연동 후 Beanstalk에 배포한 뒤 API 테스트를 진행 해볼 것이다. 본 포스팅은 Elastic Beanstalk + Aurora RDS 환경에서 테스트를 진행한다. * 해당 Beanstalk 구축 및 RDS 구축 예제는 해당 링크 참고 * Spring Boot 에선 Spring Data Redis를 통해서 Lettuce, Jedis라는 두 가지 오픈소스 Java 라이브러리를 사용할 수 있다. 이 2가지로 Redis에 접근할 수 있는데, Lettuce는 별도의 설정이 필요하지 않고, Jedis는 별도의 의존성이 필요하다. 또..
-
[AWS + Spring] EB + ElastiCache Redis + Spring Boot 연동 (1)Spring 2023. 1. 15. 17:35
이번 포스팅에선 AWS ElastiCache Redis Cluster를 구축하여 Spring Boot와 연동하고 최종적으로 AWS Elastic Beanstalk에 배포까지 해본다. (Elasticache는 같은 VPC내에서만 접근 가능하기 때문) 단, 이번 포스팅에선 테스트 목적이기 때문에 '싱글 클러스터 노드'로 구축할 것이다. 💡 애플리케이션을 배포할 Elastic Beanstalk & Redis 접속을 위한 Bastion-Host가 없으신 분은 해당 링크 참고하여 생성 시작하기 앞서, 간단히 살펴보자. ElastiCache는 알려진 대로 데이터베이스 캐싱을 위해 사용한다. ElastiCache for Redis를 구축할 때 고민해야 하는 것 중 하나가 바로 클러스터 구성이다. 클러스터 구성에 ..
-
[AWS + Spring] EB + Spring Boot + Aurora RDS 연동 및 Read/Write 분산 처리 (3)Spring 2023. 1. 14. 17:23
저번 포스팅에선 bastion host로 ssh turnnel 방식을 사용하여 Intellij DataBase Tool에 Aurora Server를 연동 하고 Aurora Read Instance(읽기 전용)를 추가했었다. 이번 포스팅에선 Spring Boot에서 ReplicationRouting Configuration을 구성하여 Read-Write 분산 처리를 하고 Elastic beanstalk에 배포할 것이다. * 참고로 우리는 최종적으로 ElasticBeanstalk에 배포까지 할 예정이기 때문에 개발 서버(혹은 스테이징, 운영) 환경 기준으로 진행한 것이다. (local이 아님) 따라서 local(Docker Mysql Container), dev(Aws Aurora Rds) 환경을 나눠줘야 ..
-
[AWS + Spring] EB + Spring Boot + Aurora RDS 연동 및 Read/Write 분산 처리 (2)Spring 2023. 1. 4. 17:23
이전 포스팅에선 ElasticBeanStalk, Aurora Cluster, Bastion Host를 구성했었다. 이번 포스팅에선 Aurora Read Instance(읽기 전용)를 추가하고 bastion host로 ssh turnnel 방식을 사용하여 Intellij DataBase Tool에 Aurora Server를 연동할 예정이다. 💡 프로비저닝된 Amazon Aurora DB 클러스터를 공개적으로 액세스할 수 있는 기본적인 방법은 아래와 같다. DB 인스턴스에 퍼블릭 IP 주소가 있어야 한다. DB 인스턴스가 공개적으로 액세스할 수 있는 서브넷에서 실행되고 있어야 한다. 하지만 위와 같은 구성일 때는, 외부로부터 안전하지가 않고 TLS를 사용하여 VPC 외부에서 오는 연결을 암호화 할 수가 있다..