웹서버안에 한 가지의 서버만 존재하지 않는다. api 서버와 웹 페이지 서버, 랜딩페이지 서버, 관리자 페이지 서버 등등 여러개의 서버가 같은 웹서버에 같이 있을 수 있다. 또한 이 서버들은 각각 다른 포트를 가진다. (localhost:8080, localhost:
현재 프로젝트에서 데이터베이스를 2가지 사용하고 있습니다. 로컬 DB AWS의 RDS 서버 그래서 기존의 datasource url을 로컬 DB에서 RDS 서버로 바꿔서 데이터베이스 서버에서 잘 작동하는지 테스트 했습니다. 하지만, RDS 서버와 연결했다가 다시 로
배포를 할 때 build를 한 뒤에 File Zilla를 사용하여 일일히 EC2 서버에 접속한 뒤 jar파일을 옮기는 방식으로 배포를 했습니다. 이 방식은 일단 깃허브와 연동도 되지 않아 불편할 뿐만 아니라, 소위 노가다 방식으로 매번 빌드를 하고 파일을 옮겨야 하기
Spring Data JPA의 가장 큰 장점은 간편함입니다. 기본적인 CRUD 메서드, 쿼리 메서드를 사용해서 엔티티의 필드와 연관된 데이터를 쉽게 가져올 수 있습니다. >기본적인 CRUD 메서드는 굳이 Repository에서 정의를 하지 않아도 서비스 단에서 사용
기존에 CI / CD 자동화는 Github Action & S3 & Code Deploy를 사용했습니다. S3 & Code Deploy 사용해서 CI/CD 자동화하기하지만, 이번에 Docker를 사용하는 방식으로 자동화 방법을 변경했습니다. 아래 3가지 이유 때문에 자
JPA에는 N+1 문제라는 것이 존재합니다. Post, Board 엔티티가 존재합니다. Post는 게시물, Board는 게시물이 작성되는 게시판(ex. 1,2,3,4번 게시판)입니다. 관계와 연관없는 필드는 생략하겠습니다! Post Board 저는 양방향 관계로
스터디에서 DB Index와 관련된 테코톡을 다 같이 시청했는데 JPA에서는 어떻게 적용하는지가 궁금해졌습니다.Index 우하한 테코톡 영상인덱스의 개념을 알아보고 JPA로 어떻게 인덱스를 사용하는지에 대해서 작성해보겠습니다!! 테이블에 100만개의 데이터가 존재하다고
Jwt를 이용한 로그인 기능은 Access 토큰과 Refresh 토큰을 이용하여 구현에 성공했다. 그런데 이 Jwt를 삭제할 수 있는 방식이 없는 것 같다...(로그아웃이 생각보다 어려웠군요..) 그렇다면 Jwt를 이용하여 로그아웃을 하려면 어떻게 해야 할까 고민을 하
저는 JWT를 통해서 로그인/로그아웃 하는 과정을 구현했습니다. JWT를 사용하는 이유는 무상태성을 가지므로 Refresh Token을 현재 HTTP Only 쿠키에 담아서 전송을 하고 있습니다. 왜냐하면 자바스크립트 기반 공격을 방어하고 싶기 때문입니다. 대표적인
프로젝트를 깃허브에 올릴 때 가장 신경써야할 부분은 바로 보안이라고 생각합니다. 실제로, 스터디원 중에 aws 정보가 노출돼서 요금 폭탄을 맞을뻔 했다는 이야기를 듣고(ㄷㄷ) 스프링 프로젝트의 보안을 어떻게 하면 강화할 수 있을까에 대해 고민을 많이 했습니다.돈 아낀다
JPA의 N+1 문제를 해결할 수 있는 전략으로 Batch Size를 설정하여 쿼리 수를 압도적으로 줄일 수 있습니다.@BatchSize( size = n )기술 블로그를 서칭하면서 상황에 맞게 Batch Size를 고려해야 한다라는 글을 읽은 적이 있습니다. 저는 이
저는 JdbcTemplate을 이용하여 Bulk Insert를 해본 경험이 있습니다. 제 포스트를 보면 아시겠지만 이 Bulk Insert의 성능은 기존의 단건 삽입과 비교하면 비약적으로 성능을 향상시킬 수 있습니다. 관련포스트 Bulk Insert 포스트 IDEN
검색 기능이야말로 정말 다양한 경우의 수가 나온다고 생각합니다.사용자들이 검색 기능을 사용할 때 사용자마다 검색 스타일이 다른데, 스타일에 따라 일관된 결괏값을 반환해야 하므로 여러 경우의 수를 고려하여 검색 기능을 개선할 필요가 있습니다.제 기존 검색 로직은 MySQ
저는 평소에 데이터베이스로는 관계형 데이터베이스인 MySQL을 사용했습니다.하지만, 크롤링한 데이터를 저장해야 하는 상황이 발생했기 때문에 NoSQL인 MongoDB를 사용하기로 했습니다.구글링을 하면서 Springboot와 MongoDB를 연동한 최신글이 생각보다 없
자바에서 크롤링을 할 때 주로 많이 사용되는 라이브러리는 Jsoup입니다. 하지만, Jsoup의 가장 큰 단점은 동적 웹페이지를 크롤링하지 못한다는 점입니다. Jsoup는 HTTP Request를 던져서 웹 서버에서 응답 결과를 받아옵니다. 서버 사이드 랜더링을 사용하
최근에 진행중인 프로젝트에서 JPA N+1 문제에 직면했습니다.\[JPA] JPA N+1 문제 해결 방법 및 성능 비교프로젝트에서 N+1문제를 해결했던 기존의 포스트가 있습니다다만, 기존의 프로젝트에서는 쿼리 메소드를 사용하고 @Query 어노테이션을 활용하여 nati
현재 IT 회사의 인턴으로 백엔드 개발 직무에서 일하고 있습니다😃. 제가 맡은 업무는 기존 몽고 DB에 존재하는 유저 정보를 Postgresql로 이관시키는 과정에서 암호화된 패스워드가 plain password와 일치하는지 검증하는 작업을 합니다.이 과정에서 Bcr