스럽 공식 블로그

고정 헤더 영역

글 제목

메뉴 레이어

스럽 공식 블로그

메뉴 리스트

  • 홈
  • 태그
  • 분류 전체보기 (23)
    • 데이터 크롤링 (2)
    • Frontend (3)
    • Android (0)
    • iOS (2)
    • DB (2)
    • Backend (6)
    • Elastic Search (5)
    • AI (1)
    • Infrastructure (2)

검색 레이어

스럽 공식 블로그

검색 영역

컨텐츠 검색

Backend

  • 스럽 서버 멀티모듈 전환기

    2024.09.30 by 준빅

  • 정보 공유 게시글의 조회 성능을 개선해보자!

    2024.01.22 by 준빅

  • 비동기 처리를 통해 검색 성능을 개선해보자!

    2023.10.07 by 준빅

  • 사진을 빠르고 안전하게!! Pre-signed URL

    2023.07.29 by 준빅

  • AOP!! Exception을 잡아줘!!

    2023.04.29 by 준빅

  • 카카오, 구글, 애플. 우리는 Sluv으로 만난다!

    2023.04.29 by 준빅

스럽 서버 멀티모듈 전환기

1. 문제현재 스럽의 서버는 다음과 같이 총 3개로 이루어져 있습니다.Admin API Batch 또한 스럽의 데이터베이스는 50개가 넘어가는 테이블을 가지고 있습니다. 이 두 가지 상황이 겹쳐 문제가 발생하였습니다.JPA를 사용하는 환경에서 데이터베이스 테이블이 50개가 넘어가면, JPA Entity 또한 50개가 넘어가는 상황이 됩니다. 이에 따라서 하나의 JPA Entity가 수정/추가/삭제되면 3번의 중복된 작업을 해야 했습니다. 2. 해결할 방법 모색2-1. 각 서버에서 필요한 JPA Entity만 사용하기가장 먼저 떠올린 방법은 JPA Entity의 특징을 사용하는 것이었습니다. JPA Entity가 있고, 데이터베이스 테이블이 없을 때는 문제가 발생하지만, 데이터베이스 테이블은 있고, JP..

Backend 2024. 9. 30. 15:14

정보 공유 게시글의 조회 성능을 개선해보자!

정보 공유 게시글은 Sluv 서비스의 핵심이 되는 기능입니다.핵심이 되는 기능이다 보니 한 페이지에 많은 데이터가 보여지며, 이는 성능 저하로 이어졌습니다.   한 페이지에 많은 데이터가 몰리다 보니 정보 공유 게시글 상세 조회에는 총 11개의 Entity가 필요한 상황이 벌어집니다. 최초의 성능 PostMan으로 성능을 측정해 보니 최초 호출 시 0.8초, JPA 캐시 호출 시 0.5초의 성능을 보여주었습니다. 이 정도면 준수(?)하지 않나라고 생각하고, JMeter로 부하 테스트를 진행하였습니다.JMeter의 Thread Group 설정은 100명이 1초 안에 동시에 접속하는 것으로 가정하였습니다.이럴 수가.. 테스트 결과를 보고 눈을 의심했습니다...최소 시간은 PostMan에서 JPA 캐시 호출의..

Backend 2024. 1. 22. 01:58

비동기 처리를 통해 검색 성능을 개선해보자!

스럽에서 중요한 비중을 차지하는 검색기능! 스럽은 연예인의 아이템 정보를 검색하는 앱입니다. 때문에 검색 기능이 많은 비중을 차지합니다. 특히! 아이템 + 커뮤니티 게시글 + 사용자를 모두 검색하는 통합검색은 가장 중요한 검색 기능입니다. 스럽의 검색 API 스럽의 검색 API는 총 4개로 구성되어 있습니다. 1. 아이템 게시글 검색 API. 2. 커뮤니티 게시글 검색 API. 3. 사용자 검색 API. 4. 아이템 + 커뮤니티 게시글 + 사용자를 모두 검색하는 통합 검색 API. 1~3번은 API Server 내부에서 ELK Server의 API를 호출합니다. 4번은 API Server 내부에서 1~3번의 기능을 모두 호출합니다. 성능이 떨어지는 통합검색.. 기존의 통합검색 API의 속도는 최대 20초..

Backend 2023. 10. 7. 18:17

사진을 빠르고 안전하게!! Pre-signed URL

서비스를 만들면 꼭 필요한 기능. 바로 이미지를 업로드하는 것입니다. Sluv의 1차 MVP 당시 이미지 업로드는 S3에 접속 정보를 프론트가 관리했고, 프론트에서 이미지를 업로드 한 뒤, S3 주소를 서버에게 전달해주는 구조였습니다.첫번째 문제점 위와 같은 방식으로 관리를 할 때 프론트에서 S3의 접속 정보를 관리하기 때문에 서버에서 관리하는 것보다 보안적인 측면에서 약하다는 문제가 있었습니다. 첫번째 해결방법 기존의 방식을 버리고, S3의 접속 정보를 서버에서 관리하며, 프론트에서 서버로 이미지 파일을 전달해주는 방식으로 해결하였습니다. 하지만 또 다른 문제점이 발생했습니다. 두번째 문제점Sluv의 서비스는 사진이 매우매우 중요하며, 또한 한번의 요청에 많이 사진이 저장되어야 하는 구조입니다. 때문에..

Backend 2023. 7. 29. 15:33

AOP!! Exception을 잡아줘!!

AOP란? AOP란 Aspect Oriented Programming. 즉, 관점 지향 프로그래밍이다. AOP는 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목표인 프로그래밍 패러다임이다. 코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작(어드바이스)을 추가함으로써 수행하며, 어느 코드가 포인트컷(pointcut) 사양을 통해 수정되는지를 따로 지정한다. 이를 통해 기능의 코드 핵심부를 어수선하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있게 한다. - 위키백과 - 즉, AOP는 핵심 비즈니스 로직에서 횡단 관심사를 분리해 애플리케이션의 특정 부분에 적용하는 것을 말합니다. 횡단 관심사? 횡단 관심사란 애플리케이션의 여러 핵심 비즈니스로직에 공..

Backend 2023. 4. 29. 22:48

카카오, 구글, 애플. 우리는 Sluv으로 만난다!

사용자들의 회원가입과 로그인을 간편하게 바꿔주는 소셜 로그인입니다. 최근에는 로컬 로그인은 구현하지 않고, 소셜 로그인으로만 구현을 하는 앱들이 늘어나고 있습니다. Sluv은 3개의 소셜 로그인 서비스를 제공합니다. [카카오, 구글, 애플] 어떻게 구현했는지 소개해드리겠습니다. 시작하기에 앞서 Sluv은 Client-Side-Rendering도 아니고 Server-Side-Rendering도 아닌, 네이티브(안드로이드, IOS), Client Sever(React)와 Server(Spring)이 공존하는 환경입니다. Client-Side-Rendering 혹은 Server-Side-Rendering일 경우 처리하는 부분이 달라질 수 있습니다. 카카오 소셜 로그인 1. 로그인 정보 (Front → Kak..

Backend 2023. 4. 29. 15:39

추가 정보

인기글

최신글

페이징

이전
1
다음
TISTORY
스럽 공식 블로그 © SLUV
인스타그램 메일

티스토리툴바