728x90

JAVA 103

배포 자동화 - 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

Spring Boot 에 Redis 설정, 캐시 적용, 조회

build.gradle에 추가implementation 'org.springframework.boot:spring-boot-starter-data-redis' application.properties에 추가spring.cache.type=redisspring.data.redis.host=spring.data.redis.port=spring.data.redis.password=spring.data.redis.repositories.enabled=false# spring.cache.redis.time-to-live=600000expire.defaultTime=36288000  mainApplication 에 추가@EnableCaching  RedisConfig class 를 만들어준다. import com...

JAVA/프로젝트 2024.11.17

로그인 AOP 적용

AOP?Aspect - Oriented - Programming스프링 프레임워크에서 제공하는 모듈. 관점 지향 프로그래밍의 구현을 지원하는 기술이다.AOP는 여러 모듈에서 공통으로 발생하는 관심사를 분리, 관리하며, 코드의 재사용성과 유지보수성을 향상 시키기 위해 사용된다. Aspect 관점: aop에서 관점이란 특정 관심사를 나타낸다.ex) 로깅, 트랜잭션, 보안.. JoinPoint 결합 지점: 어드바이스가 실행되는 시점. 예를 들어 메서드 호출이나 필드 접근 지점. PointCut 지점: 어드바이스를 적용할 결합 지점을 나타낸다. 정규 표현식이나 패턴을 사용하여 결합 지점을 정한다. Around 는 Advice 유형 중 하나로, 타겟 메서드를 감싸서 호출 전 후에 코드를 실행하게 해주는 어노테이션이..

JAVA/프로젝트 2024.11.16

대규모 트래픽을 고려한 프로젝트 기획 - 스택, 목적, 기능, 컨벤션, ERD

환경: JDK17, intelliJ기술: Spring Boot, Mybatis데이터: MySQL, redis성능 테스트: Locust, Python 프로젝트 목적:대용량 트래픽을 고려한 어플리케이션 개발(초당1000 tps 이상의게시글검색API)객체지향과 디자인패턴을 적용 및 가독성을 고려한 코드 작성 방법 공유현업 단계에서 코드리뷰를 어떻게 하는지 경험 공유모니터링 및 트러블 슈팅 전락 공유젠킨스 툴로 배포 자동화를 통해 개발 생산성 높이기 프로젝트 기획회원가입, 탈퇴아이디, 닉네임 중복 체크비밀번호 암호화로그인 로그아웃게시판카테고리 관리게시글& 파일추가, 삭제, 수정, 조회유저정보, 게시글제목, 게시글내용게시글검색기능댓글작성기능어드민공지글 추가 기능  커밋 컨벤션  브랜치 전략 - Git Flow 사..

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