이전 포스팅 이전에 공유 자원에 대한 동시성을 처리하며, 기존의 값을 조회해온뒤 + 5 해서 Update 플로우를 진행했었다. 최근 한 블로그를 보면서 내가 생각하지 못했던 로직에 대해서 직접 다뤄보려고 한다. 조회수 기능 구현 (동시성 이슈) 공유자원의 문제를 생

엔진엑스의 default.conf 파일에 리버스 프록시 설정을 추가했지만, proxy_pass 가 적용되지 않는 문제점이 존재했다.api/health url 검색해도 502 에러가 나왔다.nginx.viraptor.info이렇게 변경하니 정상적으로 돌아갔다 ! prox
이전 포스팅 DB 단계에서 Lock 설정을 통한 비관적락을 통해 병렬 요청으로 인한 동시성을 처리했다. Lock을 확인하러 가는 과정에 DB에 접근이 불가피하다. 복잡한 서비스에서 컬럼들에 무자비하게 Lock을 건다면 데드락 상황이 발생할수 있다. 컬럼이 아닌 로

DB - mysqlORM - JPA이전 포스팅이전 포스팅에서 코드 레벨에서의 동시성 처리에 대해서 학습했다.각 서버에서가 아닌? 하나의 DB에 동시에 접근해서 CRUD 한다면? 앞선 동시성 이슈가 DB에서 발생하게 되고, 이는 데이터의 정합성을 보장해줄수 없게된다.un

이전 포스팅 JAVA 멀티 스레드 환경에서 공유 자원에 대한 궁금증을 해결해보자 이전 포스팅에서 JVM을 공부하며, 공유자원의 중요성을 느꼈고, 예제와 test를 통해서 학습을 진행해보려 합니다. 만약 선착순 100명에게 커피 쿠폰을 제공하는 이벤트가 있다고 가정

JAVA 언어와 Spring Boot FrameWork를 사용한지 2년이 다되갈 무렵 문득 내부 원리에 대한 기억이 희미해져간다...컴파일 원리와 JVM의 내부 저장소와 동작 원리를 다시 한번 학습하고 넘어가자 !우선 컴파일 원리를 위한 기본 지식으로.java 원시코드

JS의 학습을 하게되어 학습 과정을 남겨 보려고 합니다. 노마드 강의 "바닐라JS 챌린지" 강의로 노마드의 니콜라스 선생님의 강의입니다. JS로 사용하는 front중 가장 기본인 vanila JS를 활용한 간단한 웹사이트 제작입니다. 아래와 같이 로그인(te
이제 기존의 Server(Spring) To Server(FastAPI) 소켓 통신을 Kafka 통신으로 변경하려고 한다. 기존 Socket 통신 Socker 을 활용한 Server To Server를 구성할때는 한쪽이 서버 한쪽이 클라이언트로 구성되어 연동을 시도
프로젝트에 Kafka를 도입하기 이전에 먼저 Spring Server 2개를 가지고 테스트를 해보려 한다. 가장 먼저 EC2 환경에 쉽게 이식할수 있도록 로컬에서도 도커를 활용해 띄우려고 한다. 해당 docker-compose를 통해서 도커를 활용해 kafka를 띄

현재 소켓 통신망을 구축해 그림 생성을 요청받은 Spring 서버와 FastApi 서버의 통신을 사용하고 있다. 하나의 서버의 version이 바뀌거나 하나의 서버라도 down 된다면 해당 소켓 통신을 유실되고 밀려있던 모든 일기의 내용이 유실되는 문제점이 존재했다.

앞 포스팅에서 학습한 spring Batch를 프로젝트에 적용해보고자 한다.라이브러리 등록 implementation 'org.springframework.boot:spring-boot-starter-batch'배치 5.0이론 5.0 이후 @EnableBatchPr

인프라 구축 완성 후 백엔드 업무에 참여했다.알림 도메인과 일괄 알림 처리를 구현하기로 하고 방법을 고민했다.FCM이 구축되어 있는 상황에서, 다음과 같은 엔티티를 설계했다.기본 알림을 구축하는데는 어려움이 없었지만, 하루중 특정 시간에 사용자들에게 일괄 알림을 보내야
Blue/Green 배포를 적용하고 외부 포트를 개방하지 않고 사용하려고 하니 문제가 존재했다. 헬스 체크시 젠킨스 내부에서 동일 네트워크내 Spring 컨테이너로 Health check 시에 해당 DNS 이름을 인식하지 못하는 문제였다. health 체크를 젠킨스
인프라를 다 구축한 뒤 잘 돌아가던 서버에서 백엔드 빌드 과정에서 10분이 넘어가는 문제가 발생했다. 그리고 정확히 13시간 뒤 서버가 뻗은 후 다시 켜졌다가 뻗기를 반복했다... 같은 경우가 있는지 찾아봤고 보통 프리티어(ram1GB) EC2에서 많이 발생하는 현
정적으로 띄워지는 컨테이너중 MySQL 의 PW를 파일이 아닌 EC2 리눅스 환경에 직접 지정하여 사용해보려고 한다. 해당 컴포즈에서는 하나의 네트워크에 expose로 설정해놨기 때문에 외부에서 접근이 불가하다 ! 하지만 root의 비밀번호가 git에 노출된다면 이
이제 앞에 학습한 내용을 직접 적용해보고자 합니다. 포트 public 으로 여는것을 막고자 expose로 처리하고 싶다 ! 따라서 컨테이너 이름으로 포워딩을 만들기 위해 springblue, springgreen 으로 각 컨테이너를 띄운다. 이후 블루 그린을 스
프론트에서 서버 API를 사용하던 도중 502 에러가 나왔다는 이야기를 들었다. 확인해보니 이런 경우는 2가지가 존재했다. spring 이미지 제작후 컨테이너를 최신 버전으로 띄울때 기존 컨테이너가 내려갔고 새로운 버전의 API를 로드할때 서버의 API는 사용할 수
다음으로는 해당 프로젝트를 진행하며 가장 많이 고민하고 또 헷갈렸던 부분이다. 도커 네트워크를 제대로 이해하고 내부 네트워크를 통한 처리를 구현하려고 한다... 그 전에 사설, 공인 IP에 대한 개념을 먼저 학습했다 ! 🌐 IP 기초 (사설IP / 공인IP / N
git 을 통해서 올리는 환경은 local 개발 환경이므로 앞서 네트워크에서 학습한대로 http://locahost 가 아닌 http://[컨테이너이름] 이 되야한다. 따라서 yml 파일을 Dev 환경과 prod 환경으로 분리해서 실행되는 환경에 맞는 파일을 마운트하