분류 전체보기 100

[AWS] EC2, RDS를 이용해 배포하기 1 - RDS 설정 및 인텔리제이와 연결 편

* 사전에 (윈도우의 경우)Git Bash 설치 및 AWS 회원가입이 선행됐다고 가정 후 쓰는 글입니다!환경Windows, Git Bash, Spring Boot 3.1.0, MySQL 오늘은 개인 토이프로젝트를 하면서 AWS의 EC2, RDS를 활용해 배포한 경험을 공유해보려고 한다. 1. FileZilla 설치먼저 이 링크에서 FileZilla를 설치해주어야 한다.다운로드 버튼을 누른 후, 제일 왼쪽의 Free 버전을 다운 받아주면 된다.▪️ FileZilla널리 사용되는 무료 및 오픈 소스 FTP 클라이언트. 주로 서버와 클라이언트 간에 파일을 전송하는 데 사용되며, FTP, FTPS, SFTP와 같은 파일 전송 프로토콜을 지원한다. FileZilla를 통해 AWS EC2 인스턴스에 파일을 전송하고..

Cloud/AWS 2024.08.03

[리팩토링] MSA 구조에서의 인증/인가 처리

[프로젝트][MSA] API Gateway 작성으로 모듈 별 연결하기우선 지금 진행하고 있는 api gateway와 각 도메인들을 모듈별로 구분해놓고, 각 모듈은 각기 다른 포트 번호를 가지고 있는 구조이다. 오늘은 api gateway 모듈에서 게이트웨이 설정으로 각 모듈 별 apdeveloper-jinnie.tistory.com문제 배경원래 로그인 시 필자가 담당하는 유저 모듈에서 JWT 토큰을 발급하고 이를 통해 인증을 처리하였으나, 다른 모듈로 요청이 전달될 때 인증 및 인가 정보를 제대로 전달받지 못하는 문제가 발생했다!이로 인해 유저 정보가 필요한 다른 모듈에서 기능이 작동되지 않는 상황.. 해결 방안 문제를 해결하기 위해서 우리 팀원들이 고려한 두 가지 방안은 이렇다  :모든 모듈에서 인증/..

[프로젝트][ES] ElasticSearch와 Kibana 설치 (feat. docker-compose)

금방 끝날 줄 알았는데 생각보다 쫌쫌따리 에러가 많아서 조금 시간이 걸렸다. 이 긴 여정과 각종 명령어를 잘 남겨두기 위해 포스팅 ..  ElasticSearch 설치1. docker-compose.yml 파일 설정기존의 docker-compose.yml 파일에 엘라스틱 서치 관련 코드를 넣어줬다. es_lecture: image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0 container_name: es_lecture ports: - "9200:9200" environment: - discovery.type=single-node networks: - neulpoom_network 2. 보안 인증 ..

[트러블슈팅] '선착순 쿠폰 발급' 로직 - Redis를 통한 동시성 문제 해결 (2/2)

[트러블슈팅] '선착순 쿠폰 발급' 로직 - 동시성 문제 발생 (w/ Race Condition) (1/2)일반 쿠폰 발급 로직 설계를 마치고, 선착순 쿠폰 발급 로직 개발에 들어왔다가 동시성 문제에 맞닥뜨렸다. 드디어 여태 들어만 봤던 동시성 문제를 해결할 기회가 왔다. 맞다이로 드루와 개요developer-jinnie.tistory.com이전 글에서는 로직 설계를 하면서 맞닥뜨린 동시성 문제와, 이 문제에 대한 분석 및 해결 방안 등을 찾아보고 비교해봤다. 이번 글에서는 지난 글을 통해 도출해낸 해결 방법을 내 로직에 적용해보며 동시성 문제를 해결해보는 과정을 담아보려 한다. 문제 해결 과정먼저 Redis를 설치해주어야 하지만 필자의 환경에서는 전에 레디스를 통한 캐싱 작업을 해 본 경험이 있어 Re..

[트러블슈팅] '선착순 쿠폰 발급' 로직 - 동시성 문제 발생 (w/ Race Condition) (1/2)

일반 쿠폰 발급 로직 설계를 마치고, 선착순 쿠폰 발급 로직 개발에 들어왔다가 동시성 문제에 맞닥뜨렸다. 드디어 여태 들어만 봤던 동시성 문제를 해결할 기회가 왔다. 맞다이로 드루와 개요일단 서비스 및 컨트롤러, 레포 코드를 작성한 후 테스트 케이스를 작성하고 돌려봤을 땐 pass가 떴다. 그 후 postman으로 1차 기능 테스트 까지는 성공.서비스 레이어 코드123456789101112131415161718192021222324252627282930    /**     * 선착순 쿠폰 발급     */    @Transactional    public CouponIssuedResponseDto issueFirstComeCoupon(CouponIssuedRequestDto request) {      ..

[프로젝트] 선착순/일반 쿠폰 발급 로직 분리에 대한 고민

프로젝트를 시작한 지 일주일이 조금 넘어간다. 초반 3일 정도 동안은 팀원들과 ERD 설계, 요구사항 정리, 깃 컨벤션 정리 등등을 했고, 본격적으로 각 도메인을 맡아 개발을 한지는 막 일주일이 된 것 같다. 내가 메인으로 맡은 쿠폰 도메인은 크게 발급 수량 제한이 없는 일반 쿠폰과, 선착순 쿠폰 이벤트를 위한 선착순 쿠폰으로 나눠진다. 그리고 쿠폰 도메인은 쿠폰 자체의 발급을 위한 관리자용 쿠폰 CRUD, 발급된 쿠폰 내역을 유저마다 관리하는 쿠폰 발급 CRD 기능이 존재한다. 이번 포스팅에서는 위에서 설명한 쿠폰 발급 로직을 설계하며 고민했던 사항들과, 고민 끝에 왜 이렇게 결정했는지 기술적 의사 결정에 대한 설명을 적어보려 한다.  🔎고민일반 쿠폰과 선착순 쿠폰 로직의 API 엔드포인트를 따로 두..

[프로젝트][MSA] API Gateway 작성으로 모듈 별 연결하기

우선 지금 진행하고 있는 api gateway와 각 도메인들을 모듈별로 구분해놓고, 각 모듈은 각기 다른 포트 번호를 가지고 있는 구조이다. 오늘은 api gateway 모듈에서 게이트웨이 설정으로 각 모듈 별 api 주소를 전부 8080 포트에서 뿌려주도록 변경해 볼 예정이다. 의존성 추가일단 스프링 클라우드 사용을 위한 의존성 추가를 해주자!ext { set('springCloudVersion', "2023.0.0")}dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' // 스프링 클라우드 implementation 'org.springframework.cloud:spring-c..

[프로젝트] 인텔리제이 깃 클론/pull 후 모듈 인식 불가 해결

문제프로젝트 초기 설정 중, 함께 피쳐 별 모듈을 나누고 깃을 클론 후 application.yml 파일을 설정하려고 하는데 풀 받은 필자의 인텔리제이 파일에서 나눠놓은 모듈을 모듈로 인식 못 하는 문제가 발생했다. 원인깃에서 풀 받으면 루트 파일의 모듈은 인텔리제이에서 알아서 찾아주는데, 그 외 따로 설정한 모듈은 알아서 찾지 못해서 인식을 못하는 것으로 추측했다. 따로 인식을 위한 추가 절차가 필요해보였다.  해결 시도 및 해결1. Import module 하기 👉 실패 모듈로 인식시키기 위해 상단 메뉴 File > Project Structure ... 로 이동해서 모듈을 import 하는 걸 시도해봤는데 왜인지 필자의 인텔리제이에서는 그대로 모듈로 인식을 못했다. 2.  해당 모듈의 build...