Project/SpringBoot9 STOMP 구독 해제 보호되어 있는 글 입니다. 2025. 5. 13. 레디스 사용 1. RedisTemplate을 이용한 분산 캐시 ( 키-값 저장소 ) 로 '방 별 인원 수'와 사용자별 입장 방 ID를 관리하여여러 서버 인스턴스가 동일한 상태를 공유함 * 분산 캐시 ( Distributed Cache ) - RedisTemplate.opsForValue() : - roomId : 123 -> 현재 인원수 - userId : 456 -> 사용자가 들어가 있는 방 ID // 방 인원 증가roomPeopleCacheTemplate.opsForValue().increment("roomId:" + roomId);// 사용자별 방 정보 저장alreadyInGameUserCacheTemplate.opsForValue().set("userId:" + userId, roomId);- roomP.. 2025. 5. 13. 자바의 동시성 처리 방법 * 문제 발생Spring 프로젝트를 진행하면서 동시성 문제에 직면했다.인게임( quiz ) -> 대기방( game ) 으로 리다이렉트 할때 문제 발생.다중 사용자들이 한번에 대기방으로 이동따라서 동시에 DB 접근을 하기 때문에 경쟁 조건 ( Race Condition ) 이 발생. * 해결 방법총 2가지로 해결 가능함1. Java의 동시성 해결 키워드를 사용 - Synchronized 키워드 - reentrantLock 키워드2. 비동기 코드를 추가해서 결과를 반환 함 - executorService 를 이용해서 비동기 처리 후 CompleteableFuture로 처리한 작업의 결과를 순차적으로 반환 받음 - @Async 어노테이션으로도 처리가 가능하다 첫번째 Synchronized 키워드를 조사한대로 .. 2025. 5. 5. Java의 동시성 문제를 해결가능한 3가지 방법 ✅ 1. synchronized (Java 기본 동기화)📌 원리 • 자바의 기본 동기화 방식으로, 한 번에 하나의 스레드만 enterRoom() 메소드 실행 가능. • 메소드 자체에 synchronized 키워드를 붙이거나 특정 객체에 대해 동기화 블록을 사용할 수 있음.@GetMapping("/room/{roomId}")public synchronized ModelAndView enterRoom(@PathVariable Long roomId, @LoginUser LoginUserRequest loginUserRequest) throws IllegalAccessException { // ... codes} ✅ 장점 • 간단하고 구현이 쉬움 (synchronized 키워드만 추가). • 자바 기본 .. 2025. 2. 12. NginX를 적용한 로드밸런싱 적용 및 웹 소켓 로드 밸런싱 1️⃣ NginX의 특징 ✅ 1. 비동기 이벤트 기반 아키텍처 - NginX는 이동기 이벤트 기반(Asynchronous, Event-driven) 모델을 사용하여 높은 성능을 제공 - Apache(쓰레드 기반)와 달리, 하나의 워커 프로세스가 비동기적으로 다수의 요청 처리 가능 - 결과적으로 동시에 많은 요청을 처리할 수 있어 CPU와 메모리 사용량이 적음 ✅ 2. 정적 콘텐츠(HTML, CSS, JS) 제공 최적화 - NginX는 정적 파일(HTML, CSS, JS 이미지 등) 제공이 빠름 - 캐싱 기능을 활용하면 서버 부하를 줄이고 응답 속도를 개선 가능 ✅ 3. Reverse Proxy & Load Balancing 지원 - 리버스 프록싱(Reverse Proxy) : 클라이언트의 요청을 받아서 .. 2025. 1. 31. AWS 프로젝트 배포과정 Intro : 이번에 프로젝트를 AWS에서 EC2로 배포를 하였는데, 블로그와 GPT 참조를 해서 배포만 해보았지 정리를 하여서 나중에 배포를 할일이 다시 생길때를 대비해서 다시 정리하기로 했습니다. ✅ 사용한 AWS 서비스 * EC2 : 애플리케이션 서버 운영 (Tomcat 기반) * RDS : 데이터베이스 관리 (MySQL/MongoDB) * S3 : 정적 파일 저장 (이미지 동영상) * 그외 : CloudFlare : HTTPS 적용 및 DNS 관리 ✅ 프로젝트 배포 단계1. AWS 계정 생성 후 IAM 사용자 및 권한 설정https://ap-northeast-2.signin.aws.amazon.com/oauth?client_id=arn%3Aaws%3Asignin%3A%3A%3Aconsole%2F.. 2025. 1. 31. 이전 1 2 다음