SSL 인증서를 사용해 웹사이트를 HTTPS로 열 수 있도록 EC2에 Nginx를 설치해보았지만막상 Nginx의 역할은 뭐지? 하고 생각해보니 proxy pass 기능 밖에 떠오르지 않았습니다 ..😅💦Nginx가 무엇인지. 아파치와는 무슨 차이가 있는지. 또 무슨 역할을 하는지 정리해보고자 합니다✏️ Nginx란?경량 웹 서버로, HTTP 요청을 처리하고 다른서버로의 요청을 전달합니다.아파치에 비해 기능은 적지만 경량화 되어있어 EC2 프리티어에서 사용하기 좋습니다. (적용해봤는데 잘 돌아갑니다👍) Apache vs Nginx 이 둘은 요청 처리 방식에서 차이가 있습니다. 1. Apache요청마다 새로운 쓰레드를 생성하여 처리프로세스 생성 시간이 오래 걸리므로 요청이 들어오기 전에 프로세스를 미리 ..
학교 공지사항 알림 어플, 롯데시네마 클론 코딩, 공연 동행 구인 웹 서비스의 백엔드로 참여하며크롤링 및 Open API 호출을 해보았습니다.각각의 프로젝트에서 어떤 방법을 사용했는지그리고 적용한 HTTP 통신 방법의 장단점에 대해 정리해보고자 합니다✏️ 1. URLConnection특징Java 자체적으로 HTTP 통신을 진행하는 클래스URLConnection은 JDK에 내장된 클래스이므로 추가 라이브러리 설치가 필요 없다.타임아웃 설정 불가능 ❌ , 쿠키 제어 불가능❌ 학교 홈페이지 공지사항 크롤링하면서, 간단한 HTTP 요청이라 외부 라이브러리 없이 URLConnection을 사용해보았습니다. 홈페이지 별로, html 구조가 달라서 공통 로직만 PknuCrawling 추상 클래스에 두고 상속받도록 ..
이전 포스팅에서 Update Lock과 Exclusive Lock을 이용하여 동시성을 제어해본 후, 비교해보았습니다.🔒Update Lock의 경우, 시간은 적게 소요되지만 업데이트 시에만 락이 걸린다는 점에서 현재는 조회수만을 제어하기에 문제가 없지만, Select 쿼리 후 Update가 이루어지는 경우에는 Update 락을 사용하게 되면 문제가 발생할 수 있었습니다. 🔒Exclusive Lock의 경우, 정확성은 보장되지만 row 자체에 락을 걸기 때문에 성능 저하가 발생하는 것을 확인했습니다. 현재 프로젝트에서는 Update Lock을 사용하여도 문제가 없지만, 학습 차원에서 인메모리 db인 레디스의 분산락을 적용해보았습니다. 조회수 동시성 제어를 위한 고민과 Update Lock 적용공연 동..
공연 동행 구인 서비스의 1차 개발이 끝나고,리팩토링 사항 중 한가지인조회수 동시성 제어를 적용해보고자 합니다💪 동시성 문제란??동일한 데이터에 여러 개의 작업이 동시에 접근할 때 발생할 수 있는 문제를 의미합니다. 예를 들어, 하나의 데이터를 수정하려는 두 개의 작업이 동시에 이루어질 때, 한 작업이 데이터를 수정하는 동안 다른 작업이 수정되기 전의 데이터를 바탕으로 수정을 하게 될 수 있습니다. 이로 인해 데이터의 일관성이 깨지고 예상치 못한 결과가 발생하게 됩니다. 아래 코드는 동행 구인글 조회 시, 조회수가 1 증가하도록 설정한 코드입니다.@Service@RequiredArgsConstructorpublic class AccompanyServiceImpl implements AccompanySe..
공연 동행 구인 서비스를 개발하며, 동행 구인글 생성 중, 이미지 첨부가 가능하여 AWS의 S3 클라우드 스토리지를 활용하여 이미지를 관리하고 있습니다🖼️ 동행 구인글 생성 및 수정 시에, 사용되고 있기도 하고 추후에 다른 기능에서도 이미지 업로드가 추가될 수 있기에 이미지 저장 시 사용되는 공통 로직들을 유틸 클래스를 만들어 추출하였습니다! 이미지 관련 공통 기능들 putObject 단일 이미지 파일을 S3에 업로드하고 이미지 URL을 반환합니다. putObjects 여러 이미지 파일을 받아 putObject 메서드를 이용하여 각 이미지를 업로드하고 S3에 업로드 하고 이미지 URL 리스트를 반환합니다. 업로드되는 이미지가 없는 경우 기본 이미지 URL을 반환합니다. deleteObject 주어진 이미..
이전 포스팅에서 커서를 사용하여 무한 스크롤을 구현해보았는데 https://jerecord.tistory.com/207 커서를 사용하여 무한 스크롤을 구현해보자.공연 동행 구인 웹 서비스의 백엔드로 참여하며 동행 구인 게시글 목록 조회 API를 구현하며 커서 기반 페이지네이션을 적용해보았습니다😀 페이지네이션(오프셋과 커서) 페이지네이션하면 대jerecord.tistory.com 검색 필터링 기능을 적용함에 따라, 사용자가 설정한 조건을 바탕으로 검색 결과 동적 제공이 필요해졌습니다👀 동적 SQL 쿼리의 필요성을 느꼈고, 네이티브 쿼리를 작성하기에는, 검색 조건도 많고가독성도 떨어지고 오타 이슈도 많을 것 같아 쿼리를 문자가 아니라 자바 코드로 작성할 수 있게 해주는..