H E L L O    W O R L D !
...

총 방문자 수

...

[]

총 포스팅

부트캠프/Dev

·부트캠프/Dev
개요개발 중인 서비스에서 가게명 검색으로 한계가 있어, 통합 검색을 구현하게 돼서 이 과정에서 발생한 트러블 슈팅 및 개선 과정을 소개하고자 합니다.통합 검색 구현1차 구현처음 구현은 DB의 LIKE로 검색을 구현해 봤습니다. 결과는 100만 건 데이터 기준으로 5초가 소요되는 것을 확인할 수 있었습니다.2차 구현2차 구현은 1차 구현의 속도 문제를 해결하기 위해 검색 컬럼에 인덱스를 적용하였습니다. 결과는 다음과 같았습니다.1차와 같이 5초가 소요됐는데 LIKE의 "%text%"검색의 경우 인덱스를 적용하지 않는 것을 알았고, "text%" 검색의 경우 정상적으로 인덱스를 활용해서 빠르게 검색이 됐습니다. 하지만 "text%"로 검색을 할 경우 검색에 매우 제한적이기에 적용할 수 없었습니다.3차어떻게 ..
·부트캠프/Dev
프로젝트우리는 회의 끝에 캐치테이블과 같이 예약, 웨이팅을 할 수 있는 서비스를 만들기로 했다. 각 자 분석을 한 후 어떤 기능들을 구현할지 정했다.먼저 나는, 웨이팅과 검색 기능을 담당하기로 했다. 원래는 알림도 있었지만, 비즈톡과 같은 API는 일단 사용을 안하고 있어서 잠시 접어두었다.웨이팅의 경우에는 생각보다 순탄하게 구현할 수 있었다. 검색 부분이 조금 애를 먹었지만 해결하고 나니까 재밌게 구현한 것 같다. 아직 남은 기간동안 보완/개선할 점들이 있겠지만, 현재는 만족스럽게 두 기능 구현이 돼있는 것 같다.25일까지 다시 열심히 달려서 취업에 꼭 성공해야겠다!
·부트캠프/Dev
이번 담당 기능에 슬랙 알림 기능 구현을 맡게 되었다.슬랙 알림은 주요 메서드가 실행될 때 로그 같은 형식으로 알림을 보내는 용도이다.바로 구현을 해보자// slack api gradleimplementation 'com.slack.api:slack-api-client:1.27.2' 먼저 gradle에 추가해 준다.제일 처음으로 생각한 방법은 이벤트를 사용하는 방식이었다.1. 사용자가 요청을 해서 메서드를 실행시킨다.2. 메서드에서 슬랙 알림을 보내는 이벤트를 발행한다.3. 이벤트 처리에서 슬랙에 알림을 보낸다.그럼 이벤트는 어떤 걸로 처리를 해야 할까? 여러 가지 이벤트 핸들링 방법이 있다. 예를 들어, RabbitMQ, 레디스 PubSub, 카프카 등등 하지만 우리의 프로젝트는 규모가 작은 프로젝트이..
·부트캠프/Dev
어느덧 최종 프로젝트 전에 할 수 있는 마지막 팀 프로젝트가 시작됐다. 주제는 트렐로같은 사이트를 만드는 것이었다.프로젝트 진행 속도를 높이기 위해 미리 템플릿을 만들어 두었다. 미리 만들어 둔 기능은 공통 반환 타입, 회원가입, 로그인, 토큰 인증 인가, 리프레쉬 토큰이다. 공통 반환 타입의 경우 왜 이렇게 구현했는지 문서로 작성해서 팀원들과 공유하고 팀원들도 좋아해주는 분위기였다. 또,  이번 프로젝트에서는 깃 이슈를 활용해서 협업을 진행하면 어떨까 해서 이 부분에 대한 설명도 함께 문서로 작성하고 팀원들과 잘 얘기하여 적용하는 방향으로 진행하게 됐다. 저번 프로젝트에서는 properties 파일들을 ignore로 올렸었는데 이번 프로젝트에서는 .env 파일을 사용하기로 했다. 이번 프로젝트에서 맡은..
·부트캠프/Dev
세팅gradle implementation 'org.springframework.boot:spring-boot-starter-amqp' testImplementation 'org.springframework.amqp:spring-rabbit-test'위 두 라이브러리를 추가해주자.propertiesspring.rabbitmq.host=localhostspring.rabbitmq.port=5672spring.rabbitmq.username=guestspring.rabbitmq.password=guest프로퍼티즈도 위와 같이 설정해주자ConfigConfig 설정을 따로 해주자.@Configurationpublic class RabbitMqConfig { @Value("${rabbitmq.qu..
·부트캠프/Dev
사전지식AMQPAMQP(Advanced Message Queuing Protocol)는 메세지 지향 미들웨어에서 사용되는 오픈 표준 프로토콜로, 애플리케이션 간 메세지를 안정적이고 효율적으로 전송하기 위한 규칙이다. 주로 메세지 브로커와 클라이언트 간의 통신을 표준화하여, 메세지를 송수신하는 과정에서 다양한 시스템 간 호환성을 보장하는 것이 목적이다.특징플랫폼 독립성: AMQP는 표준화된 프로토콜로 서로 다른 언어나 플랫폼으로 개발된 애플리케이션이 AMQP를 통해 메세지를 교환할 수 있다. 즉, 다양한 언어로 개발된 시스템 간에도 호환된다!확실한 메세지 전달 보장: 메세지가 손실 없이 목적지에 도달할 수 있도록 확실한 메세지 전달을 지원한다. 메세지가 성공적으로 전달되지 않으면 재전송할 수 있으며, Ac..
·부트캠프/Dev
시작!사실 아웃소싱 프로젝트는 지금 글 쓰기전인 목요일날 시작됐다. 머리빠지게 구현하느라 밀려서 지금부터 작성해야겠다.ㅎㅎ 그래도 팀플이 세번정도 하니까 어느정도 감도 잡히고 익숙해진 것 같다. 이번 프로젝트부터 갑자기 난이도가 상승한 것 같다. 이번 프로젝트의 컨셉은 배달의 민족 같은 배달 플랫폼을 외주받았다 생각하고 구현하는 것이었다. 필수 구현은 어느때와 마찬가지로 구현할 것들이 많지 않았는데, 추가 기능 구현에 13개나 있었다.다들 처음에 이걸보고 추가 기능구현은 일단 생각하지 말고 필수구현부터 끝내자고 얘기가 나왔다.API 명세, ERD 명세, 와이어프레임까지 막힘없이 진행됐다.ERD를 필수구현쪽만 생각해서 짰었는데, 추가 기능 구현도 생각해서 테이블을 설계하려고아래 처럼 바꿨다가 튜터님께 한소..
·부트캠프/Dev
프로젝트 들어가기 전프로젝트에 들어가기 전에 개인과제를 진행하다 보니 팀원 간 소통이 별로 없어서 팀프로젝트에 걱정이 많았었다. 프로젝트 들어간 후일단 내가 팀장을 하기로 했고, 걱정과는 다르게 팀원분들 모두 적극적으로 참여하시고(다들 I 셨나 보다) 진행도 원활히 되었다. 작업 분담일단 우리가 인원이 적은 관계로 판을 키우지 말고 필수에 집중해서 완성도를 높이기로 했다. 구현해야 할 필수 사항은 유저관리, jwt로그인 및 인증 인가, 글 관리, 친구 관계 관리가 있었다. 이 중 나는 프로젝트에 들어가기 전에 미리 스프링 시큐리티로 jwt 액세스토큰과 리프레쉬토큰을 이용해서 로그인과 인증 인가를 하는 방법에 대해 미리 공부를 하고 있어서 이 부분을 내가 맞기로 했다. 나머지 두 분에게는 유저 관리와, 글..
·부트캠프/Dev
기능 구현오늘은 마지막날이다. 이전에 연습해오던 연관검색 기능을 구현해서 넣어볼 것이다. 넣는 이유는 튜터님께서 알려주신 TRIE 알고리즘을 공부하다가 연관검색이라는 기능에도 관심이 생겨서 찾아봤었는데 이번 프로젝트에서 내가 찾고 싶은 정보와 연관된 글 목록들을 보여주는 기능이 있으면 편리할 것 같다는 생각이 들어서이다.supabase, pgvector, Ollama와 mxbai-embed-large모델을 사용했다.supabase는 임베딩된 벡터값을 저장하기 위해 사용했다.Ollama를 사용하면 내 컴퓨터에서 LLM을 돌릴 수 있다! 즉, 유료 API를 사용하지 않고 직접 돌릴 수 있다.ollama를 사용하기 위해선 expressjs로 간단하게 서버를 만들었다. 물론 expressjs를 사용해본적이 없어..
·부트캠프/Dev
기능 구현오늘은 친구 기능과 북마크 기능을 구현하였다.친구 기능친구 기능은 구현할 때 테이블 설계에 두 가지 선택 사항이 있었다.친구 테이블 하나로 할지친구 테이블과 친구 요청 테이블을 분리할지이번에는 친구 테이블 하나로 관리를 해줬다. 요청한 유저의 아이디와 요청받은 유저의 아이디, 그리고 enum으로 Waiting과 accepted상태를 관리해주었다.유저 테이블과 친구 테이블은 1:N관계로 설계했다.처음에는 url를 만들 때 애를 먹었던게 친구 삭제와 친구 요청 거절이 적고 보니까 똑같이 /api/friends/{id} 였다. 그래서 고민 끝에 요청, 요청 거절은 이름을 다르게 했다.public class FriendshipController { private final FriendshipSer..
·부트캠프/Dev
기능 구현스프링 시큐리티를 활용해서 jwt 인증 인가를 구현했다./api/login 으로 로그인 시도를 하면 JwtAuthenticationFilter에서 로그인 성공 시 jwt 토큰을 반환해준다.토큰은 리프레쉬가 가능하게 했다.액세스 토큰은 헤더로 넘겨주고, 리프레쉬 토큰은 쿠키에 저장 후 따로 DB로 관리해주었다.@Overrideprotected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { log.info("로그인 성공 및 ..
·부트캠프/Dev
시작첫 스프링 팀 프로젝트가 시작됐다.기간은 9월2일부터 9월 6일까지인데 사실상 5일까지이다. 조가 네명이었는데 중간에 한 분이 나가시는 바람에 3명이 됐다. 첫 스프링 팀프로젝트를 세명이서 진행하다니...그래도 다행히 주말에 이런거 나올 것 같다고 예상하고 공부한 부분들이 얼추 나와서 수월하게 진행할 수 있을 것 같다.프로젝트팀원분의 의견을 받아 구글킵같은 느낌처럼 Sparta Study keep(SSK)라는 프로젝트를 진행하기로 했다.일단 나는 프로젝트에서 jwt토큰을 활용한 로그인, 로그아웃, 회원가입, 인증/인가 기능과 친구 기능을 담당하기로 했다. 빠르게 필요기능을 끝내고 추가 기능 구현을 할 예정이다.이번 프로젝트에서 팀장을 맡았다. 잘 마무리하고 싶다.
nameless1004
'부트캠프/Dev' 카테고리의 글 목록