728x90

JAVA 106

쿠폰 선착순 발급 이벤트 - 기획, ERD,프로젝트 세팅

ERD 개요한정 수량의 쿠폰을 먼저 신청한 사용자에게 제공하는 이벤트Mysql 기반 쿠폰 발급 기능을 개발한다.Redis 기반 구판 발급 기능을 개발한다.AWS에 서버를 배포하고 Locust 를 통해 부하테스트를 진행 한다. 요구사항이벤트 기간내에 발급유저당 1번의 쿠폰 발급선착순 쿠폰의 최대 쿠폰 발급 수량 설정 기능쿠폰 발급 기능쿠폰 발급 기간 검증쿠폰 발급 수량 검증쿠폰 전체 발급 수량중복 발급 요청 검증쿠폰 발급쿠폰 발급 수량 증가쿠폰 발급 기록 저장쿠폰 ID유저 ID목표정확한 발급 수량 제어 (동시성 이슈 처리)높은 처리량멀티 모듈 사용gradle - kotlin 경험. 깃 컨벤션 build: 빌드, 의존성 추가feat: 새로운 기능 추가fix: 에러 수정docs: 문서 수정style: 코드 포..

JAVA/프로젝트 2024.11.27

배포 자동화 - jenkins를 통해 만든 .jar 파일 운영 환경 서버에 배포하기

SSH?Secure Shell네트워크 상 다른 pc에 로그인하거나 원격 시스템에 명령어를 실행해서 다른 시스템으로 파일을 복사할 수 있도록 하는 응용프로그램 또는 프로토콜을 말한다. 데이터를 암호화해 전송 중간에 패킷을 가로채더라도 내용을 읽을 수 없다.포트 포워딩(일종의 터널)을 제공해 네트워크상에서 안전한 데이터 전송이 가능하다.서버와 클라이언트간 통신을 안전하게 하기 위해  로컬 포트와 원격 포트를 매핑한다. 기밀성과 무결성을 보장한다. 클라이언트/서버 형태로 클라이언트에 접속, 원격 명령어를 통해 파일을 전송할 수 있다.  CI 후 자동적으로  SSH 프로토콜을 통해 Ec2원격  저장소에 jar파일을 올려 실행 시키는 CD 과정 AWS - EC2 - 인스턴스 시작 이름 설정 -  applicati..

JAVA/프로젝트 2024.11.26

배포 자동화 - jenkins, ngrok, Webhooks

Jenkins build CI 자동화 https://www.jenkins.io/download/ Download and deployJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarewww.jenkins.io젠킨스 설치. 디폴트로 설정 후 next. 포트 번호는 마음대로 정해면 된다. 나는 7070다른 글 보면 Unlock Jenkins 라는 창이 뜨는데 나는 안떠서 직접 localhost:7070 접속해주었다. install suggested plugins - > create Frist Admin User 생성 후l..

JAVA/프로젝트 2024.11.26

배포 자동화 - 이론. CICD, Gradle, Jenkins

배포란개발된 어플리케이션을 실제 서버나 클라우드 환경과 같은 운영 환경에 설치하고 실행하는 과정이다.빌드환경 설정데이터베이스 마이그레이션서버 실행로깅 및 모니터링 설정보안 강화성능 최적화모니터링 및 로깅스케일 아웃백업 및 복구 계획CICD 파이프라인 설정 CICD: 지속적 통합 Continuous Intergration, 지속적 배포Continuous Deployment 소프트웨어 개발 및 배포 프로세스를 자동화하고 지속적으로 품질을 유지하며 빠르게 새로운 기능을 배포하는 방법을 나타낸다.  CI 프로세스코드 작성자동 빌드자동 테스트자동화된 통합CD 프로세스CI를 통한 자동화자동 배포 준비수동 승인환경 구성 관리롤백 기능자동 배포CICD 의 이점빠른 피드백자동화된 빌드 및 테스트안정적인 배포품질 향상높은..

JAVA/프로젝트 2024.11.25

스프링부트 Slack 알림 연동

https://api.slack.com/apps Slack API: Applications | SlackYour Apps Don't see an app you're looking for? Sign in to another workspace.api.slack.comcreate new app - OAuth Permissions - add on OAuth scope 에서 channels:read, chat:write 추가setting - install app - install to workspace 허용.위 과정을 거치면 OAuth token 이 발급됨. 통합 - 앱추가 - 만든 앱 추가하기  이 토큰을 properties 에 등록.slack.token=  build.gradle 에 추가implementati..

JAVA/프로젝트 2024.11.25

알림 기능 개발, AWS SNS 연동

Spring Boot 내에서 이벤트, 경고, 에러 같은 중요한 상황을 감지하고 이를 관리자, 개발자에게 알리는 기능. 신속한 대응과 문제 해결을 돕는 데 중요한 역할을 한다.장애 감지, 대응서비스 가용성 유지성능 모니터링비용 절감사용자 경험 향상예방적 조치AWS SNS 연동Amazon Simple Notification Service: AWS의 클라우드 기반 메시징 서비스. 이를 사용하면 애플리케이션, 서비스 또는 시스템 간에 다양한 종류의 메세지를 안전하게 전송하고 관리 할 수 있다.푸시 알람다중 프로토콜 지원 (HTTP, HTTPS, SMS,email, SQS, Lambda 등 지원)이벤트 기반 아키텍쳐확장성과 신뢰성미리 알림 및 모니터링  연동하기AWS root 사용자로 접속 - IAM dashbo..

JAVA/프로젝트 2024.11.21

성능테스트 - 리팩토링

아키텍쳐 리팩토링 스케일 아웃 Scale outAWS 로드 밸런서를 사용해 애플리케이션을 여러 서버로 분산해 트래픽을 균형있게 분배하고 고가용성을 제공하는데 도움이 된다.  분산 시스템 아키텍쳐마이크로 서비스 아키텍쳐를 고려해 각 부분을 독립적으로 스케일 아웃한다. 확장성을 제공한다. 서버 리소스 최적화서버 리소스 (CPU, 메모리, 디스크) 를 최적화하고 운영체제 및 웹 서버를 튜닝한다.애플리케이션 리팩토링 캐싱 활용자주 접근하는 데이터를 캐시한다.  동일한 데이터에 대한 요청이 있을 때 마다 더 빠르게 제공할 수 있다캐시란? 데이터를 임시 저장하는 기술. 비동기 프로그래밍spring 의 비동기 서비스 및 메세징을 활용해 요청과 응답을 병렬로 처리하고 병목현상을 줄인다.비동기 프로그래밍이란? 동시에 작..

JAVA/프로젝트 2024.11.21

성능 테스트 - Locust 설치, 이론

intelliJ - new Projdct 에서 python 을 택한다.terminal 창에서pip install locust  locust 는 vscode Installer가 없으면 설치되지 않는다. 설치 후 진행.  스크립트를 작성한다. from locust import HttpUser, task, betweenimport randomclass AddPosts(HttpUser): wait_time = between(1, 2) def on_start(self): self.client.post("/members/sign-in", json={ "memberId":"member", "password": "1234" }) @task def add_post(self): s..

JAVA/프로젝트 2024.11.20

성능 테스트 진행- 테스트 종류와 툴, 진행할 시나리오

성능테스트?해당 어플리케이션의 성능, 확장성및 안정성을 평가하는 과정을 나타낸다.테스트의 목적은 어플리케이션의 부하 처리 능력, 응답시간, 처리량 및 자원사용량과 같은 성능 관련지표를 측정해 어플리케이션이 예상된 작업 부하 아래에서 어떻게 수행되는지 이해하는데 도움을 준다.  성능 테스트의 종류스트레스 테스트: 어플리케이션을 최대 부하에서 테스트하는 과정. 어플리케이션의 성능 한계를 확인하고 부하 처리 능력을 평가한다. 대량의 동시 사용자 또는 트랜잭션을 생성해 어플리케이션의 응답 시간과 자원 사용량을 모니터링한다.  스파이크 테스트: 갑작스러운 부하 증가에 대한 어플리케이션의 대응 능력을 테스트한다. 예를 들어 선착순 할인 이벤트 같은 이벤트로 인해 갑자기 많은 사용자가 어플리케이션에 접속하는 시나리오..

JAVA/프로젝트 2024.11.18
728x90
반응형