| Frontend | Backend |
|---|---|
| 🕵️ | 🕵️ |
일탈 웹사이트 바로가기 🌐
방탈출, 하고는 싶은데 뭘 해야할지 모르겠다면?? 🤔
일탈에서 방탈출 정보를 한번에 모아보고, 바로 예약사이트로 연결까지
나의 방탈출 업적을 기록해 뱃지도 받아보세요~
(맨 위로)
- 방탈출 업체와 테마의 정보를 한번에 모아볼 수 있습니다.
- 원하는 방탈출 테마의 조건으로 검색하고 평점순,리뷰순 등으로 정렬해서 볼 수 있습니다.
- 하고 싶은 테마를 찾았다면 예약사이트로 바로 연결할 수 있습니다.
- 방탈출을 하고 해당 테마의 리뷰를 남기면 성공횟수와 실패횟수로 뱃지를 획득할 수 있습니다.
- 마음에 드는 방탈출 업체와 테마는 찜해두고 마이페이지에서 모아볼 수 있습니다.
(맨 위로)
(맨 위로)
쿼리 성능 개선
-
사이트를 이용하는 user의 username을 이용해서 user의 정보, 성공횟수, 실패횟수를 구해야한다.
-
내가 작성한 후기 조회를 조회 한다.
-
우리 사이트가 가지고 있는 칭호를 조회한다.
-
해당하는 테마의 후기를 조회한다.
-
하나의 API 안에서 여러 개의 Entity를 조회하려고 할 때 다수의 N + 1문제가 발생한다.
-
관련된 조회할 때 불필요하게 select 문이 계속 실행되어서 log에 select문이 많이 찍히는 것을 발견함
-
기본적으로 성능에 관한 문제는 jpql fetch join을 사용하면 된다는 것을 알았고, query to dto를 사용하면 유의미하지만 이 또한 성능개선이 된다는것을 알게되었다. jpql fetch join을 사용하게 되면 select문이 한번만 실행되었고 query to dto를 사용해서 service로직 또한 간결해졌다.
-
Querydsl의 projections 기능을 이용해서 Entity 전체를 불러오는 것이 아닌 필요한 데이터만 불러오게 였더니 성능개선의 효과가 (57ms → 46ms) 있었고 dto를 repository에서 바로 반환하기 때문에 service 로직이 간결해졌고 repository와 service의 역할을 분리해 줄 수 있었다.
- 프로젝트를 시작 하기전에 Erd설계를 처음부터 잘 짜 놓은다면 불필요하게 이곳저곳에서 쿼리를 실행 시키지 않아도 된다는 것을 느꼈다.
Transactional과 변경 감지 기능
- 메인페이지에 업적 달성률 순으로 상위 4명을 보여주는 ‘베스트탈출러’ api 구현
- 코드 수정 후 업적 달성 카운트를 조회해 DB에 업데이트 해주는 메소드가 실행되지 않음
-
update 메소드 다음에 JPA save 메소드 추가
-
Entity 조회하는 로직의 위치를 변경
-
DB에 직접 칼럼명을 넣어보고, entity에 null값의 문제인줄알고 primitive type 자료형이 아닌reference type 자료형을 넣어봄
-
조회 부분이라
@Transactional이 빠져있어서 다시 추가
- 변경감지기능이 잘 작동하지 않았던 것은 transaction readonly true가 적용되어서 update 처리하는 transaction이 제대로 작동하지 않았던 문제였고, 수정 했더니 문제가 해결되었다.
Https 설정
-
HTTPS는 SSL 또는 TLS라는 암호화 기술을 통해 방문한 웹사이트에 브라우저를 안전하게 연결하여 브라우징 환경을 안전하게 유지한다.
-
사용자에게 안전한 브라우징 환경을 제공하기 위해 보안이 강화된 Https를 사용하고 싶었다.
-
무료 SSL 인증서인 Let’s Encrypt와 Certbot을 사용하여 Https 설정을 하려고 했다.
-
먼저 80포트로 가상 웹서버를 띄워 인증서를 발급받는 standalone 방식을 적용했는데,
-
apache2가 계속 자동으로 80포트를 실행시켜 오류가 났고,
-
그 이유로 구매해 놓은 도메인이 5번 이상 인증에 실패해 몇시간 동안 인증시도가 불가한 상황에 처했다.
-
Let’s Encrypt + Certbot
해당 도메인 인증제한이 풀릴때까지 기다리거나 새로운 도메인을 구입해 시도하기
-
AWS Certificate Manager + AWS Route53
새로운 인증방식 시도하기
- 런칭 기간이 얼마 남지 않았고, 시간이 오래 소요될 수록 유저피드백을 받을 수 있는 기간이 줄어들기 때문에 빠른 해결이 필요해 비교적 간단한 AWS Certificate Manager를 이용한 방법으로 재시도 했다.
이미지 리사이징을 통한 성능개선
(맨 위로)
| 이기재 | 남궁은 | 한수진 |
|---|---|---|
| BE | BE | BE |
| ESFP | ENTJ | INFP |
| 🔗 | 🔗 | 🔗 |
(맨 위로)
구글 선생님에게 도움을 받았겠지만 특별히 이분에겐 감사합니다 하는 사이트.
(맨 위로)
