인덱스란? 인덱스는 특정 컬럼값을 기준으로 row(데이터)를 빠르게 탐색할 수 있는 자료구조로 insert, update, delete의 성능을 희생하고 select의 성능을 높이는 데 이용합니다. 인덱스의 가장 큰 특징은 인덱스를 설정한 컬럼 기준으로 데이터를 정렬
단일 테스트를 진행할 때 성공했던 테스트가 전체 동작 테스트에서 실패를 하는 상황이 발생했습니다.위는 부스에 댓글을 추가하는 기능을 테스트를 하는 것이 단일로 실행을 할 경우에는 성공을 하지만 테스트 전체 코드를 실행 했을 때에는 실패하는 것을 확인할 수 있습니다.오류
렛츠 끼릿의 메인 페이지에서는 공연정보와 더불어서 당일에 가장 인기 있는 부스(주점, 플리마켓 등등)를 나타내주고 있습니다. 위의 사진과 같이 인기 있는 부스를 5개만 추출하여 나타내주고 있었습니다. 이 때 인기있는 부스의 기준으로는 여러가지가 의논이 되었습니다.댓글이
축제 사이트를 구축한 배경 2022년 코로나 19가 창궐하던 시기가 점점 진정되면서 비대면이었던 수업이 대면 수업으로 전환되었습니다. 그리고 그동안 진행되지 않았던 학교 축제가 다시 기획되었습니다. 축제 시작에 앞서서 다양한 정보(공연, 푸드트럭, 플리마켓, 공지사
소셜 로그인(OAuth) 도입기 글에 이어서 작업한 내용으로 확장성 있는 소셜 로그인 시스템을 구축한 과정에 대해서 정리하고자 합니다.이 코드는 당시 구글 소셜 로그인을 구축할 때 구현할 코드입니다. 이후 카카오 소셜 로그인을 추가하려다 보니 기존 구조에 문제가 있음을
이번 초록 스터디 사다리 미션의 1단계 리뷰 과정에서는 테스트가 용이한 코드란 무엇일까?에 대해 깊이 고민할 수 있는 기회가 되었습니다. 미션 설명 사다리 미션의 1단계는 4x4 사다리를 생성하는 것이었습니다. 4x4 사다리를 위의 그림과 같이 생성을 하되 핵심은
6월부터 시작된 로또 미션이 8월이 되어서 마무리가 되었습니다. 로또 미션은 우리가 시중에서 구매할 수 있는 로또 시스템을 만드는 것으로 본 미션의 핵심은 클린 코드 였습니다. 해당 목적을 달성하기 위해 원시값 포장, 일급 컬렉션 등의 키워드가 등장했습니다. 이번 미션
로또 미션에서 한 스터원이 당첨 통계를 출력할 때 View가 Domain에 의존해 화면을 출력하고 있어서 View에서 Domain을 의존하지 않게 수정해보는 것을 리뷰로 남겼었습니다.이와 같은 리뷰를 남긴 이유는 위의 사진에도 나와있듯 View에서 Domain 객체를
로또 미션을 수행하던 중 참조값을 끊지 않아서 약 2시간 정도를 해맸습니다. 먼저 로또는 1과 45 사이의 숫자 6개로 구성됩니다. 로또를 구현하는 방법에는 여러가지가 있겠지만 저는 1부터 45 숫자를 캐싱해 두고 로또를 생성 때마 shuffle을 한 뒤에 앞에 6개의
미션 공지와 함께 약 한달을 기준으로 자동차 경주 미션을 진행했습니다. 먼저 미션을 잘 마무리 할 수 있었지만 제 취준(면접 기간)과 스터디원들의 야근이 겹치게 되면서 기간이 연장되어 최종적으로는 6/10에 미션이 마무리 되었습니다. 이번 미션을 통해 제가 느낀 아쉬웠
이번에 프로젝트 팀원들과 함께 초록 스터디를 진행하기로 했습니다. 초록 스터디는 스터디 자료를 제공해주고 스터디원들끼지 자유롭게 스터디를 진행하는 방식으로 자세한 정보는 https://cho-log.github.io/를 참고해 주세요! (전반적인 스터디 진행
이번 s-hook 프로젝트에서 소셜 로그인을 진행하는 과정에서 refreshToken을 보내줄 때 cookie를 활용해서 전송해주었습니다. 이 과정에서 springboot 내 cookie를 활용하는 법에 대한 학습이 필요했고 이를 정리하고자 합니다. Cookie란?
팀원들과 현재 저희 서비스의 시스템 구조도를 보면서 대량의 요청에 대해서는 어떤 문제점이 발생할 수 있는지 파악하고 이에 대해서 어떻게 확장할 수 있을지에 대해서 고민하는 시간을 가졌습니다. 현재 S-hook의 운영서버 시스템 구조도는 아래와 같습니다. 현재 서비스
작년에 우아한테크코스를 마치고 리프래쉬하는 중에 대학교 후배로부터 GDSC 해커톤 백엔드 멘토를 맏아 줄 수 있냐는 제의를 받았습니다.처음 제의를 받았을 때에는 “재미있겠다” 라는 생각보다는 “내가 잘할 수 있을끼?” 라는 생각이 가장 먼저 머리속을 채웠습니다. 그 이
앞선 글에서 트랜잭션이 무엇이고 왜 이용해야하는지에 대해서 예시를 통해서 살펴보았습니다.(이전 글 보기 : Transaction은-무엇일까) 트랜잭션은 DB의 논리적인 작업 단위를 나타내는 것이고 데이터의 일관성을 유지하기 위해서 이용한다는 것을 알 수 있었습니다. 이
백엔드는 비즈니스 로직을 개발하면서 변화된 데이터를 DB에 반영해주는 작업을 진행합니다. 간단한 CRUD의 경우에는 SQL 하나가 작업 단위인 경우가 있지만 복잡한 비즈니스 사항을 구현하다보면 한번에 여러 데이터가 변화하는 상황이 많습니다. 간단하게 송금을 해주는 예시
현재 S-HOOK 서비스는 유튜브 쇼츠와 인스타 릴스와 같이 스와이프를 통해 노래 듣기 기능의 편의성을 높였습니다. 스와이프를 구현하기 위해 사용자가 하나의 노래를 클릭하면 좋아요 개수를 기준으로 사용자가 선택한 노래 앞뒤 10개를 미리 가져와야 했습니다.사용자가 특정
S-HOOK 서비스의 핵심은 사용자들이 노래의 킬링파트를 빠르게 접할 수 있다는 것입니다. 이는 서비스 회원(로그인을 한 사용자) 뿐만아니라 비회원 모두 이용할 수 있는 기능이어야 합니다. 이 부분에서 발생했던 문제점이 있었습니다. 이는 같은 요청(노래 상세페이지)에
shook 서비스에서 인증 기능을 도입하기로 했습니다. 인증 과정이 추가됨에 따라 서비스에 진입 장벽이 생긴다고 팀원들 모두가 생각했습니다. 하지만 저희 서비스에서 신뢰있는 킬링파트 정보를 수집하는 것과 추후에 마음에 드는 킬링파트를 아카이빙 할 수 있는 기능이 필요하
자바에서 문자열을 다룰 수 있는 라이브러리는 StringBuilder와 StringBuffer가 존재하고 이 둘의 특징과 차이점에 대해서 알아보겠습니다. StringBuilder와 StringBuffer에 대해 알아보기에 앞서서 먼저 String에 대해서 알아보겠습니다