본문 바로가기

전체 글

(26)
우당탕탕 Bulk INSERT 도입기 1. 개요집콕 프로젝트를 리팩토링 하면서 쿼리 최적화를 진행했다.기존 코드에서 쿼리는 stream 내부에서 발생되는 등 무분별하게 사용되었다. 그래서 초창기 집콕 서버를 nGrinder로 성능 측정 해보면 TPS가 엄청 낮게 나오는 것을 확인했었다. 집콕 서버 리팩토링 스터디를 하면서 손꼽은 문제 중 하나가 쿼리 최적화였고 상반기-여름방학 동안 리팩토링을 진행했다. (리팩토링에 대한 자세한 내용은 따로 포스팅으로 다루었다.) Kok 도메인 리팩토링User 도메인 리팩토링쿼리 최적화를 하면서 가장 큰 골칫덩어리는 무분별하게 발생되는 INSERT/UPDATE/DELETE 쿼리들이었다. 집콕에서는 User마다 Kok의 내부 설정을 변경할 수 있는 기능이 있는데, 처음 User를 생성하면 default 값들이 ..
User 도메인 API 코드 개선 및 쿼리 최적화 - 집콕 서버 리팩토링(3) 7주 차 스터디에서는 User 도메인에 있는 API들에 대해서 코드 리팩토링과 쿼리 최적화를 진행했다. 집콕 서비스는 카카오 로그인을 하기 때문에 내부적으로 아이디/비번을 다루지 않는다. 카카오에서 인증을 마치고 이메일과 회원가입 형식을 입력하면 JWT token을 발급해 주는 형식으로 이루어져 있다.  User 도메인에 있는 API는 총 10개로, 다음과 같다.    프로젝트를 한차례 진행해보고 나니 API를 이렇게 많이 만들 필요가 없었다는 것을 이제 느낀다. 당시에 만들었던 API 들을 보면, 마이페이지 API, 마이페이지 수정 페이지 API 등 (둘 다 user의 정보를 불러오는 API이다.) 이렇게 비슷한 기능을 하는 API를 분리시킬 필요가 없었다. 둘 다 프론트 경험이 없다 보니 정보를 캐싱..
Kok 도메인 API 코드 개선 및 쿼리 최적화 - 집콕 서버 리팩토링(2) 저번에 이어서 계속 코드 리팩토링과 쿼리 최적화에 대한 내용이다. 저번에는 RealEstate 도메인에서 가장 중요한 GET /realEstate 라는 API 에 대해서 리팩토링을 진행했었다. 저번과 마찬가지로 최우선적으로 수정하고자한 부분은 코드의 객체지향화와 발생 쿼리를 최소한으로 유지시키는 것이 목표였다. 이번에는 우리 집콕의 핵심 기능이라고 할 수 있는 Kok 도메인에 대한 API이다.Kok은 사용자가 발품을 팔면서 느낀점, 사진, 별점, 후기, 체크리스트 등을 등록해두어서, 나중에 다시 보더라도 그때 겪은 느낌을 생생히 다시 전달하여 매물에 대한 비교분석이 쉬워지도록 하는 기능이다. 체크리스트는 사용자 별로 커스텀이 가능하지만 디폴트로 제공되는 항목들이 있어서 매물을 볼 때 어떤 점을 확인해야 ..
Docker 와 Kubernetes 적응하기 at OSSCA 컴퓨터를 공부하다보면 정말 다양한 프레임워크와 툴들이 존재한다. 그런 것들을 잘 활용하면 많은 이점이 있지만 적응하기까지 조금 시간이 걸린다. Git과 GitHub도 그랬고, Spring Boot 도 그랬다.  이번 2024 오픈소스 컨트리뷰션 아카데미를 하면서 나는 ArgoCD에 대한 컨트리뷰션을 해볼 수 있게 되었다. ArgoCD를 이해하기 위해선 배경지식이 필요한데 그것이 Docker 와 Kubernetes 이다. 계속 공부해야지 해야지 하면서 미루다가 2주차 과제로 'Helm을 이용해서 k8s에 이미지 배포해보기' 가 나오면서 더이상 미룰 수 없게 되었다.    Docker 는 큐시즘 29기 백엔드로 활동하면서 사용해본적 있다. 하지만 개념도 모르고 그냥 Dockerfile 복붙해서 GitHub ..
RealEstate 도메인 API 코드 개선 및 쿼리 최적화 - 집콕 서버 리팩토링(1) 서론이건 2024 상반기 학기 중에 진행했던 내용이다.  저번 포스팅에 정리했듯이 학기 중에는 각자 할 일이 많아서 크게 진도 나가지 못했다. 학기 중에는 nGrinder 환경 세팅을 좀 하고 RealEstate 도메인 API 개선을 좀 했다.  3개의 큰 도메인 중 (RealEstate, User, Kok) 왜 RealEstate를 먼저 했냐면 메인 화면의 지도에서 보여지는 매물을 조회하는 API 가 있어서 중요하다고 판단했고, 해당 API 에서 발생되는 쿼리가 302개나 되어서 가장 먼저 해보기로 했다. (요청 하나 당 쿼리가 302개면 이 API는 쓸모없게 되는거 아닌가...??)  개선 전  우리가 살펴본 API는 메인 화면 지도에서 보여질 매물을 반환하는 API이다. 메인화면 지도가 줌 인/아웃..
집콕 서버 리팩토링 작년 하반기에 백엔드 서버를 처음 배웠다.KUIT이라는 교내 IT 동아리에서 한 학기 동안 10주차 강의를 듣고(파트장님이 해주시는), 종강 후 기획자-디자이너-개발자가 팀을 꾸려서 프로젝트를 해볼 수 있었다. 시작이 좋았다.군대를 전역하고 열정으로 가득 차 있던 나에게 KUIT은 기회였고, 좋은 파트장님과 좋은 스터디원들을 만나서 많이 배우고 공부했다. 그리고 프로젝트도 정말 잊을 수 없는 좋은 경험이었다.  겨울방학 2달 간 난 집콕이라는 프로젝트를 했다.   집콕은 자취방 발품 서비스로 다방, 직방처럼 직접 매물을 등록/확인하는 서비스와는 달리, 자취방을 구하는 사람들이 발품다니며 조사한 정보를 쉽게 저장하고 꺼내어 비교해볼 수 있는 서비스이다. 즉 자취 초보자가 전문가처럼 자취방을 알아볼 수 있도..
GitHub PR (with DCO 봇, GPG 서명, Issue 연결) 2024 오픈소스 컨트리뷰션 아카데미 ArgoCD 프로젝트 멘티로 합류하고 나서 별다른 활동이 없었다. 일단 개인적으로 쿠버네티스 책을 읽어보면서 환경에 대한 이해를 하고 있었다.  멘토님들이 공지를 Slack으로 해주신다고 하셨는데 Slack에 별다른 알림이 오질 않아서 혼자 공부만 하고 있었다. 그러다 오늘 혹시나 하는 마음에 Slack에 들어가보니 이미 월요일에 첫 번째 과제를 올려주셨던 것이다..!! 왜 내 Slack은 알람이 오질 않는 것인가? 설정을 다시 해야겠다. 아무튼 첫 번째 과제가 있었다.   첫 번째 과제는 GitHub를 이용해서 PR을 생성해보고 merge해보는 작업이었다. 여러 번의 프로젝트를 하면서 Git과 GitHub을 그럭저럭 다룰 수 있다고 생각했었기에 좀 쉽게 보았다.  ..
2024 오픈소스 컨트리뷰션 아카데미 발대식 24.07.13  2024 오픈소스 컨트리뷰션 발대식을 진행했다. 장소는 강남에 있는 한국과학기술회관이라는 곳이었다. 같이 프로젝트하는 사람들과 처음 대면하는 자리이고 규모도 좀 큰 것 같아서 좀 기대가 되었다. 점심을 안먹고 가서 다과를 좀 기대했다.  생각했던 것보다 규모가 더 커서 놀랐다. 그리고 기념품을 주는데 C타입 휴대용 충전기였다. 난 아이폰인데.. 너무 유용했고 나름 환영받는 것 같아서 기분이 좋았다.  발대식은 1부 2부로 나뉘어져서 진행되었고 12시부터 대략 5시 정도까지 진행되었다.  1부에서는 아카데미 소개와 이전 기수 멘토님들의 팁 전수 시간이 있었다. 멘토님들이 직접 겪었던 이슈들과 당시 멘티들이 성장해가고 오픈소스에 기여했다는 이야기들을 들으면서 나도 열심히 참여해서 성장하고 ..