본문 바로가기

분류 전체보기

(202)
[DB 마이그레이션] 다운타임 1초 이내로 데이터 옮기기 안녕하세요 브로콜리입니다. 오늘은 최근 디베이트 타이머에서 담당했던 데이터 마이그레이션 업무의 쿼리 계획에 대해 이야기해보고자 합니다. 먼저 도메인 용어부터 짚고 넘어가겠습니다. 토론 테이블 : 토론 시간표의 정보를 담은 테이블 (30초 알림 유무, 논제, 시간표 이름 등등)토론 타임박스 : 토론 시간표를 구성하는 순서 하나하나 예를 들어 다음 보이는 시간표 하나하나는 토론 테이블이 됩니다. 지금은 2가지 토론 테이블이 있네요. 그중 창의와 소통 테이블 내로 들어가보면 각 테이블을 구성하는 타임박스들이 존재했습니다. Situation : 의회식 토론 형식의 제거 > 커스텀 토론으로 통합그럼 상황을 더 자세히 살펴보겠습니다.디베이트 타이머는 의회식 토론과 커스텀 토론의 두가지 타입의 토론이 있었고, 각 토..
[디베이트 타이머] 초기 실 사용자 100명을 유치하기까지 안녕하세요 브로콜리입니다. 오늘은 제가 리딩하고 있는 프로젝트 '디베이트 타이머'에 대해 이야기해볼까 합니다.지난 5월 초, 디베이트 타이머의 실 유저가 100명이 되었습니다. (5.12일 기준 112명) WAU도 안정적으로 50명 대를 기록하고 있습니다. 실제로 사용이 되는 서비스를 만들기까지, 디베이트 타이머는 어떤 여정을 거쳐왔을까요?오늘은 100명을 달성한 회고와 앞으로의 방향성에 대해 다뤄보고자 합니다. 디베이트 타이머 바로가기 1) 디베이트 타이머의 시작 24년 12월 즈음, 우테코가 마무리되며 새로운 프로젝트를 향한 열망이 불타올랐습니다.관심이 있는 분야에서, 정말 쓰이는 서비스를 만들고 싶었고 다시 토론으로 돌아갔습니다. 그렇게, 24년 12월 총 6명의 팀원이 확정되었고 첫번째 스프린..
[기술 토론] @Transactional 롤백 테스트 vs 클린업 후 커밋 테스트 안녕하세요 브로콜리입니다. 오늘은 매쉬업 10분 테크 세미나에서 발표할 @Transactional 롤백 테스트에 대해 이야기를 나눠보겠습니다. 먼저 스프링 테스트 프레임워크에서 @Transactional을 사용하면테스트 레이어에서 생성된 트랜잭션이 프로덕션 레이어에 전파되어 테스트가 자동 롤백됩니다.참고) 어떤 내부원리로 롤백이 가능한 걸까? 본 글에서는1) 롤백 테스트의 합리성에 대한 개발계의 주요 논의를 정리하고,2) 제 경험을 기준으로 판단한 롤백테스트에 대한 기준들을 정리해보고자 합니다. 1. 논의의 시작 : 토비님의 QA 개발계에서 본 논의의 시발점은 다름 아닌 토비님의 유투브 Q&A로 파악됩니다.당시 토비님은 "몇 가지 상황만 주의하면 되는데 아예 @Transactional 테스트의 단점을 포..
[OAuth In Action] Node.js로 OAuth 의 3주체를 구현해보자 (보호된 리소스, 클라이언트, 인증 서버) ㅇ안녕하세요 브로콜리입니다. 오늘은 OAuth2 In Action 의 ch3-ch5를 실습하며 OAuth2의 인증과정과 구현원리를 학습한 내용을 정리해보려 합니다.(모든 기반 코드는 OAuth2 In Action 실습 코드를 활용하였습니다.) OAuth2란?시스템의 어떤 구성요소가 다른 시스템의 어떤 구성요소에 대한 접근 권한을 얻을 수 있게 해주는 것입니다.즉, 특정 리소스의 접근 권한을 다른 누군가에게 위임하는 과정을 의미합니다.1. OAuth의 4요소 : 리소스 소유자, 보호된 리소스,  클라이언트,  인가서버 리소스 소유자: API에 대한 접근 권한을 가지고 있으며 그것을 위임할 수 있는 사람입니다.: 주로 자신의 정보를 프로그램에게 넘기는 유저로 대변됩니다. 보호된 리소스: 리소스 소유자가 접근..
점진적으로 IT 연합동아리 합격률 높이기(feat. 매쉬업, 프로그라피) 안녕하세요 브로콜리입니다. 오늘은 지난 상반기 기간동안 집중했던 IT 연합동아리 지원 경험에 대해 살펴보고자 합니다.최종적인 로그를 살펴보면 다음과 같습니다. (지원팀은 Spring - 서버 파트입니다.)1. 넥스터즈(24.11월 지원) - 서류 탈락2. DND (24.12월 지원) - 서류 탈락3. 디프만 (24.12월 지원) - 서류 합격 - 면접 탈락4. 매쉬업 (25.2월 지원) - 최종 합격5. 프로그라피 (25.2월 지원) - 최종 합격 3연속 탈락에서 2개의 연합동아리에 합격하기까지 어떤 과정을 겪었는지 다음 차례를 통해 회고하고자 합니다.1) 내가 원하는 연합 동아리 기준 세우기2) 3연속 탈락에서 발견한 서류 작성 인사이트들3) IT 연합동아리 면접 질문 모음 및 팁4) 내가 활동할 IT..
NamedParameterJdbcTemplate을 활용해 SaveAll 반복 쿼리를 최적화해보자 안녕하세요 브로콜리입니다. 오늘은 saveAll의 반복 쿼리 호출에 대한 고민과, NamedParameterJdbcTemplate을 통해 해결한 과정을 소개하고자 합니다.  Situation : saveAll의 쿼리 반복 호출 프로그라피 사전과제에서는 상황에 맞게 유저 수를 세팅하기 위해 외부 API로부터 유저정보를 받아 유저를 저장하는 초기화 API를 개발해야 했습니다. 명세를 보면 seed와 초기화할 유저량 quantity를 넣어주면 유저를 초기화하는 모습을 볼 수 있습니다.[구현 요구사항]1. 기존에 있던 데이터를 모두 삭제한다2. 외부 API에게 seed와 quantity를 넘겨 유저정보를 받는다3. 유저를 애플리케이션 DB에 저장한다.  문제 : API 응답속도가 너무 느리다 그러나, 구현을 완..
중앙대 UMC X GDG 연합 해커톤(청룡톤) 대상 수상 및 후기 안녕하세요 브로콜리입니다. 지난 2월 9-10일 간 중대 지부 UMC와 GDG가 연합하여 해커톤을 진행하였습니다. 저는 두 곳 모두 속해있지 않은 회원이었지만 다음과 같은 것들을 경험하고 싶어 백엔드로 지원하게 되었습니다.  0. 지원 동기- 1. 괜찮은 프론트엔드 크루가 있다면 디베이트 타이머 팀에 영입제안을 하고 싶다.- 2. 대학생들로 이루어진 동아리(ex) 멋사) 부원과 소통하며 내가 성장할 수 있는 환경인지 판단하고 싶다.- 3. 짧은 시간 내에 크레이티브를 최대한 폭발시키는 과정을 경험하고 싶다.  특히 해커톤은 제 버킷리스트 중 하나로 적혀있을 만큼 개발을 공부하기 시작한 순간부터 어느정도의 로망이 있었습니다. 처음 지원하게 되는 해커톤에 마음이 설레기도 하였습니다.1. 대회 일정과 팀 빌딩..
[디베이트 타이머 - 5차 스프린트] 2차 유저 테스트와 디자이너 합류 안녕하세요 브로콜리입니다. 디베이트 타이머 팀은 현재 Phase 1 - 의회식 타이머 기능 개발을 모두 마치고 현재 Phase 2 로 접어들고 있습니다.디자이너 분의 합류로 뷰 개선과 더불어 시간총량제 타이머 개발, 그리고 실 유저 모집을 위한 콜메일이 주요 태스크가 될 것 같습니다. 오늘은 2차 유저 테스트에서 나온 의견을 정리해보려 합니다. 1. 테스트 대상토론 강의를 진행하셨던 분을 대상으로 테스트를 진행하였습니다.: 약 1년 반 이상의 토론 강의 경험 보유: 토론 교육기관에서 학생들을 대상으로 토론 강의 및 자료 제작 경험2. 테스트 방식 테스트 방식은 지난 1차 UT와 동일한 방법으로 대상자가 토론 사회자가 되어 토론을 진행하는 방식을 유지했습니다. 다만 이번에는 키보드 조작 및 테이블 수정하기..