본문 바로가기

⛳️ 공동구매 서비스 총대마켓

(14)
♻️ 쿼리 최적화와 인덱스로 API 응답 속도 426배 개선하기 문제 총대마켓 서비스의 메인페이지 필터링 및 검색 조회 API Latency가 100만 건 더미데이터 기준, 약 25초에 근접했습니다. 사용자가 메인페이지에서 30초간 아무런 데이터도 확인할 수 없었죠. 조회 성공 시 API Latency 약 23초2024-10-10 20:35:23 [http-nio-8080-exec-4] INFO c.z.c.l.config.LoggingInterceptor - LoggingInfoSuccessResponse[identifier=e472b64f-5b04-4ce4-ab08-0c96c43fdd45, memberIdentifier=Not Found, httpMethod=GET, uri=/read-only/offerings, requestBody=, statusCode=200..
개발 환경 CI/CD 파이프라인 구축기 | Github Actions, Self-hosted Runner, Docker 기술 선택 이유 CI/CD 필요성작년 여름 참여했던 북링크 프로젝트에서, 백엔드 코드에 변경 사항이 발생할 때마다 깃허브 pull, 빌드, 서버 내리고 올리기 과정을 반복했다. 모든 자잘한 작업들을 수동으로 진행했기 때문에 명령어를 입력할 때 잦은 실수가 있었고, 가끔은 배포 과정을 잊어 프론트엔드 팀원들에게 미안한 상황도 종종 발생했다. CI/CD에 무지했기 때문에 발생했던 불편함이었다. 덕분에 지속적으로 코드를 통합하고 배포하는 과정이 꼭 필요함을 체감했다. 이번에 진행하는 총대마켓 프로젝트에서는 실수를 줄이기 위해 배포를 자동화해보자!사용 기술Github Actions + Self-hosted RunnerDockerGithub Actions 선택 이유총대마켓 서비스가 Github Actions를 CI/CD 구축 도..
OG 메타 태그 크롤링하여 이미지 추출하기 | Jsoup 구현 상황작년 겨울 프윗 웹 서비스를 개발할 당시, 다음(daum) 뉴스 목록을 크롤링해야 하는 상황이 있었다. 뉴스의 일부를 우리 서비스에서 미리보기로 제공하고, 클릭 시 해당 뉴스 기사 사이트로 이동하도록 해야했다. 메타 태그의 존재를 몰랐던 그 때의 나는, 기사 HTML 파일 내 원하는 태그의 클래스와 아이디를 기준으로 열심히 정보를 추출했다. 그 당시엔 크롤링으로 정보를 가져온 내가 무척 대견했다. 하지만 오픈그래프의 존재를 알아버린 지금, 과거의 내가 더 대단하게 느껴진다.OG와 메타 태그에 대해 알고 있었다면, 그리고 다음 뉴스가 메타 태그를 제공한다는 사실을 알고 있었다면 더욱 간단하게 코드를 완성했을 것이다. 훨씬 적은 시간 리소스를 들였을 것이다. 겁없이 무식하게 도전해 내 방식대로 성공시킨 ..
[협업] 한 달 간의 고진감래 https://youtu.be/SIuF37EWaLU?si=BfCObIwG7VtW6HXL Q. 한 달 간 팀 프로젝트를 진행하며 감정 상태의 변화가 긍정적으로 바뀐 경우 긍정적으로 바뀐 상황, 이유를 떠올려 보고 이를 한 단계 더 개선하기 위해 어떤 시도를 하면 좋을까요? 1주차 (기획 + 팀빌딩)당황스러움, 화남, 불안함, 답답함, 초조함 나는 함께 하는 사람이 좋을 때 힘이 난다. 레벨2에서 크루들에게 이런 질문을 자주 했다. “성격이 정말 안 맞는데 일 잘 하는 크루 vs 일을 못하는데 성격이 정말 잘 맞는 크루” 중 누구와 함께 프로젝트하는 것이 좋은가? 나는 항상 후자를 택했다. 그만큼 레벨3 프로젝트 조 크루들에 대한 기대감이 높았고 나와 성격이 잘 맞는 사람이길 바랐다. 그러나 레벨3 프로젝트..
CI/CD란 | Github Actions 사용해보기 요구 사항작년 여름 참여했던 북링크 프로젝트에서, 백엔드 코드에 변경 사항이 발생할 때마다 깃허브 pull, 빌드, 서버 내리고 올리기 과정을 반복했다. 모든 자잘한 작업들이 수동이었기 때문에 명령어를 입력할 때 실수가 자주 발생했고, 가끔은 서버 업데이트를 잊어 프론트엔드에게 미안한 상황도 종종 발생했다. CI/CD에 무지했기 때문에 발생했던 불편함이었다. 이번 프로젝트에서는 그럴 일이 없도록 CI/CD를 적용해보자! 용어 정리컴파일: 소스코드 → 기계어 (ex. 영어 글 → 한글 글)빌드: 소스코드 → 컴퓨터에서 실행 가능한 소프트웨어 산출물, 빌드에 컴파일이 포함되어있음 (ex. 글 → 책)배포: 빌드 결과물을 사용자가 접근할 수 있는 환경에 배치 (ex. 책을 서점에 배치) CI/CD테스트, 통합..
문서화 도구 Swagger vs Spring REST Docs 앞으로 팀 프로젝트에서 필요할 사전 지식을 전날 준비하기로 다짐했다.노션에 틈틈이 기록해두는 것에 그치지 않고, 부족하지만 블로그에 정제된 문장으로 기록하는 연습을 해보겠다!SwaggerOAS를 기반으로 구축된 오픈소스 도구 세트로, REST API를 설계, 빌드, 문서화하고 사용하는 데 도움이 된다. * OAS: Open API Specification(이전 Swagger Specification), Rest API에 대한 API 설명 형식 일단 적용해보기확실히 Spring REST Docs 문서를 생성해본 후 Swagger를 적용해보니, 신세계였다. [TroubleShooting 1] Swagger UI를 제공하는 라이브러리를 선택할 때 많은 레퍼런스에서 springfox를 사용하여, 나도 같은 라..