데이터베이스를 다룰 때 동시성 제어는 매우 중요한 이슈입니다. JPA에서는 이를 위해 두 가지 주요 전략인 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)을 제공합니다. 이 두 전략의 특징과 사용법, 그리고 언제 어떤 전략을 선택해야 할지 알아보겠습니다.1. 낙관적 락 (Optimistic Lock)특징데이터 충돌이 드물게 발생한다고 가정합니다.실제로 데이터를 수정할 때 충돌을 감지합니다.주로 버전(version) 컬럼을 사용하여 구현합니다.작동 방식엔티티를 읽을 때 버전 정보도 함께 읽습니다.데이터 수정 시 버전 정보를 확인합니다.버전이 일치하면 수정을 진행하고 버전을 증가시킵니다.버전이 불일치하면 예외를 발생시킵니다.구현 예시@Entitypublic class U..
들어가며캡스톤 프로젝트를 진행하면서 WebRTC를 이용한 비대면 화상채팅 기능을 개발하였다. 처음 만들어보는 기능이라 관련 용어가 생소하여 러닝커브가 있었기 때문에 이를 기록하고자 글을 작성한다.필자는 Signaling서버 구축을 담당하였기 때문에 Client 코드는 포함하지 않았다.WebRTC란?WebRTC (Web Real-Time Communication) 는 웹 브라우저나 모바일 애플리케이션에서 실시간 음성, 영상 및 데이터 통신을 가능하게 하는 중요한 구성 요소들이다. 주로 다음과 같은 기능을 제공한다.음성 통화 (Audio Calling): 브라우저 간에 음성 데이터를 교환영상 통화 (Video Calling): 브라우저 간에 영상 데이터를 교환데이터 채널 (Data Channel): 텍스트나..
들어가며최근 토이 프로젝트 진행 중에 발생한 CORS 이슈에 대해 원인과 해결 방법에 대해 정리한 내용을 글로 쓰고자 한다.React에서 한국투자증권 오픈 API를 이용하여 데이터를 보여주는 방식으로 진행하고자 하였다.하지만 오픈 API 서버에서 CORS 정책을 허용하지 않아서 React Client에서 직접적인 API호출이 불가능하다는 사실을 알게 되었다.여기서 CORS란 무엇인지 간단히 알아보자. CORS란?Cross-Origin Resource Sharing (CORS)는 웹사이트가 서로 다른 출처에서 리소스(데이터나 콘텐츠)를 요청하고 공유하는 방법을 의미한다. 그렇다면 CORS가 왜 필요할까? 예시를 들어보자. 1. 같은 출처인 경우https://mysite.com 해당 사이트에서 자바스크립트로..
먼저 SSL 인증서를 적용하려면 도메인을 구입하여야 한다.또한 도메인 A레코드에 서버 IP를 추가하여 DNS 쿼리가 정상적으로 이루어지는지 확인하여야 한다. 다음으로 https://www.sslforfree.com 사이트에서 인증서를 발급받아야 한다. 이곳에 본인의 도메인을 입력하고 버튼을 누른다. 현재 화면에서 도메인 다시 입력 후 Validity는 무료버전인 90일로 설정 후 나머지는 기본으로 진행하면 된다. 다음 화면으로 넘어가면 도메인이 자신의 소유인 것을 인증해야 하는데 Email 은 해당 Email이 있어야 하므로 DNS 인증을 한다. 도메인을 구입한 사이트에서 도메인 레코드 추가를 하는데 CNAME 레코드를 추가하여야 한다. CNAME Record 의 Name = Name Value, ..
Spring Boot 프로젝트에서 JPA를 동적으로 사용하려면 QueryDSL이라는 의존성을 추가하여 사용한다.이는 QClass를 이용하는데 빌드할 때 이를 생성한다. 하지만 빌드할때마다 뭔가 꼬여서 recreate를 하는데 에러가 발생하는데 이를 해결하기 위해서는 다음과같이 빌드 및 실행을 gradle이 아닌 intellij idea로 변경해주면 해결된다. (안된다면 clean 수동으로 해주고 다시 빌드해보기)
이번에 진행하는 프로젝트에서 영상 및 JSON 파일을 object storage에 저장하는 서비스 로직을 추가하게 되었다 설명에 앞서 Amazon의 S3가 아닌 Ncloud의 objectStorage를 선정한 이유는 크게 4가지다. 1. 국내서비스라 문서읽기가 매우편함. 2. 최근 Ncloud의 Server, DB 등등 사용해봐서 익숙함. 3. AWS 과금에 당한적이있음. 4. objectstorage 1주간 사용해봤는데 파일 크기가 얼마안되는지 아직까지 0원 청구됨. (매우쌈) Amazon의 S3랑 완벽하게 호환되고 국내서비스라 Docs를 읽을때 좀 더 쉽게 이해할 수 있었다 나는 spring boot 즉 java 언어를 사용하기 때문에 아래와 같은 Docs를 참고하여 사용하였음 https://guid..