Diary
-
테스트 코드 수행 시간 개선하기Diary/우아한테크코스 2022. 10. 26. 10:57
속닥속닥 프로젝트에서는 현재 425개의 테스트가 작성되어 있다. 프로젝트 중반이 넘어가기 전쯤에 DirtiesContext를 덜어내고 EntityManager를 통해 테스트 격리를 해 시간이 굉장히 오래 걸리진 않았지만, 그래도 테스트 코드 작성이 늘어가면서 시간이 늘어나는 것이 보였고 개선할수 있는것은 최대한 개선해보아야 겠다는 생각을 했다. Context Caching 테스트에서 ApplicationContext 가 한번 로드되면, 같은 test suite 에서는 동일한 unique context 설정일 때 후에 진행되는 테스트들에 대해서 context를 재사용한다. ApplicationContext는 configuration 파라미터들의 조합에 의해 유니크함이 판별된다. 즉, 유니크한 cofigur..
-
좋아요 개수 조회 최적화하기Diary/우아한테크코스 2022. 10. 18. 17:33
우아한테크코스 4기 토르와 같이 테코블에 작성한 글입니다. https://tecoble.techcourse.co.kr/post/2022-10-10-like-count/ 속닥속닥 프로젝트(https://github.com/woowacourse-teams/2022-sokdak)를 진행하면서 현재는 문제가 되지 않지만 시간이 갈수록 데이터가 쌓이면서 문제가 될 수도 있겠다라고 생각한 부분이 있습니다. 게시글에 대한 '좋아요' 기능인데요, 현재 구조에서는 게시글을 조회할 때, '좋아요' 테이블과 함께 조인을 해서 가져오고 있습니다. 단순히 좋아요 개수만 저장하지 않는 이유는, 한번 좋아요 버튼을 누른 사람은 두 번째 누를 때 취소할 수 있어야 하기 때문입니다. 하지만 이런 방식이라면 만약 게시글 하나에 좋아요가..
-
무중단 배포 적용기Diary/우아한테크코스 2022. 10. 17. 22:38
우아한테크코스 최종 데모데이의 요구사항으로 무중단 배포가 있다. 이를 학습하고 적용한 내용을 정리한다. 무중단 배포는 왜 필요할까? 스프린트4 때쯤, 기능을 개발하고 팀원들끼리 QA를 한 후에 운영서버에 배포를 하고 있었다. 그런데, 그 찰나의 순간에 우리 속닥속닥 서비스를 이용하고 있던 다른팀 크루가 속닥속닥 왜 안되냐는 말을 했다. 우리 서비스의 경우 사용자가 많지 않고, 잠깐 서비스가 중단된다 해서 금전적인 손해가 발생하지는 않기 때문에 큰 문제는 없다. 그런데, 서비스가 잠깐이라도 중단되면 안되는 서비스라면 어떨까? 특히, 금전적인 문제가 달려있다면? 새로운 기능을 배포하거나 버그 픽스는 위험을 감수해가며 배포 할 것이지만, 리팩터링에 대한 배포는 쉽지 않을 것이다. 무중단 배포 3가지 방법 Ro..
-
대댓글 기능 구현하기Diary/우아한테크코스 2022. 10. 4. 22:06
속닥속닥 프로젝트는 댓글 기능이 존재하는 상황이었다. 그런데 운영중 사용자들의 피드백으로 대댓글 기능을 도입해달라는 피드백이 많았고, 우리 팀 또한 대댓글을 도입하면 재미있을 거라고 생각해 기능 개발을 하게 되었다! 요구 사항은 다음과 같다. 댓글에 대댓글을 작성할 수 있다. 댓글이 삭제 되더라도 대댓글은 남아 있어야 한다. 댓글이 삭제된 상태에서, 그 댓글에 달린 대댓글이 모두 삭제되면 댓글 또한 완전히 삭제되어야 한다. 익명으로 작성하는 댓글의 경우 임의의 닉네임(ex: 짜증나는 리액트)으로 보여주고, 한 번 댓글을 작성해 익명 닉네임을 할당 받은 경우 한 게시글에서는 같은 익명 닉네임을 사용하게 되는데, 이를 대댓글에도 적용한다. 먼저, 대댓글 객체 설계에 대한 고민부터 시작했다. 댓글 객체의 필드..
-
Refresh Token 으로 자동 로그인 구현하기 (2)Diary/우아한테크코스 2022. 8. 8. 00:17
Refresh Token 으로 자동 로그인 구현하기 Refresh Token 으로 자동 로그인 구현하기 우테코 내에서 팀 프로젝트로 속닥속닥 이라는 익명 커뮤니티를 개발하고 있다. 현재 인증/인가를 JWT를 이용해 구현했는데, 토큰 만료 시간이 지났을 경우 로그인이 풀리는 문제가 있다. 토큰 easthshin.tistory.com Refresh token 저장소에는 어떤 정보를 넣을까? refresh token에는 access token과 달리 그 자체로는 회원의 정보를 담고있지 않고, 만료 기한만 갖고 있도록 하였다. 이는 만료 기한이 긴 refresh token이 탈취 되더라도 그 자체로는 어떠한 정보도 얻을수 없기 위함이다. 토큰 자체로는 만료 기한 외의 정보를 가지고 있지 않기 때문에 해당 멤버의..
-
Refresh Token 으로 자동 로그인 구현하기 (1)Diary/우아한테크코스 2022. 7. 29. 09:59
우테코 내에서 팀 프로젝트로 속닥속닥 이라는 익명 커뮤니티를 개발하고 있다. 현재 인증/인가를 JWT를 이용해 구현했는데, 토큰 만료 시간이 지났을 경우 로그인이 풀리는 문제가 있다. 토큰 만료로 갑작스레 로그인이 풀린다면 사용자는 불편을 겪을 것이다. 예를 들어, 속닥속닥 사용자가 게시판에 글을 열심히 쓰고, 작성 버튼을 눌러 글 작성을 완료하려 한다. 하지만, 작성하는 도중에 토큰이 만료되었고 글 작성 버튼을 누르는 순간 로그인 화면으로 돌아가 하던 작업을 잃게 된다. 이런 상황을 방지하기 위해 토큰이 만료된다면 자동으로 다시 발급해주어 로그인이 풀리지 않게 구현하려 한다. 이를 위해, Refresh Token을 이용하면 된다. 자동로그인 동작 시나리오 1. 로그인하면 access token과 ref..
-
우아한테크코스 4기 지원 후기Diary/Review 2022. 1. 1. 22:34
우테코는 우아한형제들에서 주관하는 무료 교육 프로그램이다. 우테코에 대해서는 우아한Tech 유튜브 채널과 우아한형제들 기술블로그를 통해 알게 되었고, 당장 실무에 투입될 수 있을만한 개발자를 양성하는 것이 목적이라는 점과 실제로 수료생들의 결과가 좋았다는 점에 끌려 지원을 하게 되었다. 개발바닥이라는 유튜브 채널에서 우아한 형제들의 개발 팀장이자 Spring 1타 강사 김영한 님의 인터뷰를 보았을 때, 우테코 수료생을 보면 팀에 정말 빨리 기여를 해서 놀랍다는 말을 듣고 더더욱 경험해보고 싶은 교육 프로그램이 되었다. 캡스톤 디자인 프로젝트 때문에 긴 선발 과정을 소화해낼 수 있을까 걱정했지만, 일단 지원하고 미래의 내가 알아서 하겠지 라는 마인드로 자소서를 쓰기 시작했다. 선발 과정 우테코는 1차에서 ..
-
TOPCIT 시험 후기Diary/Review 2022. 1. 1. 05:10
우리 학교는 졸업하려면 TOPCIT 점수가 있어야 하기 때문에 TOPCIT 시험을 응시하였다. 사실 프로젝트 하느라 바쁘기도 하고 졸업 요건 넘기는건 어렵지 않을 것 같아서 공부를 하지 않고 그냥 시험을 보러 갔다... TOPCIT 이란? TOPCIT은 실무 능력 중심으로 소프트웨어 역량을 평가하기 위해 만들어진 시험이라 한다. 다양한 대학과 MOU가 맺어져 있어 이 시험이 졸업요건인 경우가 많다. 실제로 시험 문제도 난이도가 있는 편에 속하는데, 1000점 만점에 평균 점수는 보통 2~300점이라고 한다. 문제 유형 사실 글을 작성하는 지금은 시험을 본 지 꽤 오랜 시간이 지나서 기억이 잘 나지는 않지만, 홈페이지의 설명과 함께 시험의 기억을 더듬어 보면 문제는 기술영역, 비즈니스 영역, 통합 영역으로..