Experience4 AWS S3 업로드 속도를 개선해보자 (feat. webp, loseless) 현재 회사에서 운영하는 서비스에서는 유저가 원하는 사진파일을 활용해 이벤트 썸네일, 유저 프로필 사진 등으로 사용할 수 있다. 이 때, 유저의 사진파일을 저장하고 요청 시에 불러올 수 있도록 AWS의 S3를 활용하여 해당 기능들을 구현했다. 1. 어떻게 구현한 코드가 업로드 속도가 느렸는지 AWS SDK를 이용해 S3와 connection 후, 유저가 업로드할 파일의 buffer를 upload 옵션에 맞게 S3에 업로드하는 간단한 코드다. 여기에서 파일의 용량을 압축시켜 S3 bucket의 가용 용량을 확보하고, 페이지 로드 시 빠르게 이미지를 업로드할 수 있는 장점을 취하기 위해 webp로 변환하는 convertToWebp 함수를 작성해 사용하였다. 해당 코드를 file.module에 작성해놓고, 이.. 2024. 3. 11. 코딩 금쪽이의 첫 리팩토링 후기(DB편) 현재 진행 중인 선물 추천 서비스 제작 프로젝트에서 나는 선물 추천 API 작성과 기획단계에서 미리 정리해놓은 상품데이터들을 DB로 Migration하는 역할을 담당하게 됐다. 먼저 선물 추천 API를 작성해보려 했으나, 데이터베이스에 데이터가 들어있지 않으니 쉽지 않은 부분들이 있어 프론트엔드 개발자 분들께 양해를 구하고, API작성이 완료되기 전까지의 모든 작업은 Mock data를 사용해서 진행하기로 하고 먼저 데이터베이스에 데이터를 어떤 식으로 Migration 할 것 인가를 고민하게 됐다. 같이 프로젝트를 하게 된 분들과 기획 단계에서 ERD를 작성하였고, ERD를 토대로 DB를 구성하였다. 그 이후 데이터를 넣는 작업을 해야하는데, Nest.js로 진행하게 된 프로젝트다 보니 Nest.js에 .. 2023. 2. 18. RESTful API # 포스팅 이유 개념적으로 알고 있던 내용인 RESTful API 및 앤드포인트에 대한 것들을 실제 프로젝트에서 적용해보며 겪은 시행착오와 성장포인트를 기록하기 위해서 # 시행착오 포인트 router에서 들어온 요청에 대해 앤드포인트로 분기처리를 할 때 생긴 시행착오였다. 앤드포인트 자체는 사용자가 화면을 렌더링 즉, 프론트엔드단의 데이터를 불러오는 url이 아닌 렌더링하기 위한 정보를 불러오는 장소를 약속한 곳이 앤드포인트라고 인식은 하고 있었다. 실제 프로젝트에서 router 분기처리 적용 시, mainpage의 product를 불러오는 router, listpage에서 product를 불러오는 router를 따로 분기해서 처리하고 있었다. 이것은 곧 page를 중심으로 분기처리를 한 것인데 이것이 .. 2023. 2. 3. [SQL] RAND / OFFSET & LIMIT / alias # ORDER BY RAND() ## 사용이유 마켓컬리 클론코딩 프로젝트 중 상품추천해주는 캐러셀에 새로고침 후 계속 상품이 업데이트 되는 것을 구현하기 위해 랜덤한 상품을 Query문으로 뽑아서 프론트단에 전달해야하는 로직을 생각하게 됐음. ## 사용방법 Query문 내에서 ORDER BY RAND()를 통해 랜덤한 것들을 DB에서 SELECT 할 수 있고, 그것들의 갯수를 제한하는 LIMIT를 걸어 10개씩 나눠서 프론트단으로 데이터를 보내줄 수 있었음. ` SELECT p.name AS productName, p.thumnail_image_url AS thumbnailImageUrl, p.short_description AS shortDescription, p.price AS price FROM p.. 2023. 2. 3. 이전 1 다음