전체 글
들어가며Tweaver 기능 중에는 OAuth2 기반의 소셜로그인 기능이 있다. 본 프로젝트에 해당 기능을 넣게된 계기와 마주한 상황, 그리고 어떻게 해결했는지를 기록하려 한다. 기대점과 문제점Twaver는 다양한 사람이 만나 당일치기 여행을 계획하는데에 도움을 주는 서비스이다. 서비스 이용자는 당일치기 여행을 계획하는 사람을 찾기 위해 빠르게 서비스에 접근할 수 있어야 한다. 따라서 이용자가 손쉽고 간편하게 서비스에 접근할 수 있게 소셜 로그인 기능을 추가했다.동작과정을 학습해볼겸, 다양한 소셜로그인을 구현하기 전에 먼저 카카오 로그인만 구현해보기로 했다.소셜 로그인을 구현하기 위해 Spring Security와 OAuth2를 이용했다. 여기서 필수적으로 고민해 볼 것은 프론트엔드와 백엔드의..
소개 나는 백엔드 소프트웨어 엔지니어다 :) 백엔드에서 개발을 하기위해 여러 공부를 했는데 그 중 제로베이스 백엔드 스쿨 과정 회고를 하려 한다. 우선 나는 제로베이스 백엔드 스쿨 13기 출신이다. 커리큘럼이 끝나고 많은 걸 느꼈다. 나는 사실 책과 이야기를 좋아하던 역사학도였다. 수업 중에 우연히 접한 한국사데이터베이스를 시작으로 개발자의 길을 걷게 되었다. 과제에 필요한 여러 역사적 자료를, 웹서비스를 통해 편하게 얻을 수 있었고, 이때를 기점으로 소프트웨어공학에 입문하게 되었다. 개발자가 되기 위해 HTML/CSS, Javascript, Python, Java, C 등 기초적인 문법을 배우는데 너무 재미있었다. 아주 단순한 프로그램을 만들면서 무엇이든지 할 수 있을 것 같은 기분이 들었고 이대로라면..
들어가며 Tweaver 프로젝트의 서버 작업을 하던 도중 서버가 멈추는 상황이 발생했다. 프로젝트를 같이 진행한 백엔드 개발자 한 분과 함께 화면을 공유하며 페어 프로그래밍을 진행했다. 그 과정을 기록하고자 한다. 문제 상황 EC2에 접속 후 docker run... 명령을 실행했다. 동작은 잘 됐고 로그도 잘 뜨는 걸 확인했다. 하지만 몇 초 뒤 이상증상이 발생했다. 각자 로컬환경에서 해당 서버로 접속한 뒤 각자 문제를 파악했다. 화면을 공유하며 정리한 증상은 다음과 같았다. EC2 서버내 docker를 이용해 컨테이너를 올린 후 몇 초뒤 서버가 느려진다. HTTP 접속을 해도 응답을 해주지 않았다. 느려지고 난 뒤에는 다른 사용자가 EC2 서버에 SSH 접속을 해도 오랜시간 기다려야 한다. 첫 번째 ..
들어가며 Tweaver 기능 중에는 OAuth2 기반의 소셜로그인 기능이 있다. 본 프로젝트에 해당 기능을 넣게된 계기와 마주한 상황, 그리고 어떻게 해결했는지를 기록하려 한다. 문제점 원래 다르게 썼었는데 이 글을 수정해서 https://eod940.tistory.com/53 이 링크의 글로 만드려다가 기록이 유실되었다. ㅠㅠ 부끄러운 기록이어도 그냥 냅두자! ... 처음에는 SecurityConfig에서 CorsConfiguration 설정을 전체 허용으로 바꿔주었다. 하지만 동일하게 문제가 발생했다. 그래서 나는 프론트의 kakao login을 담당하는 코드를 분석해봤다. https://devtalk.kakao.com/t/rest-api-cors/114424 글을 참조했다. 비동기 방식으로 호출하면..
들어가며 테스트를 실행하면서 겪었던 일들에 관해 기록하려 한다. 회원가입 코드는 [그림1]과 같다. 우선 회원가입 기능은 다음과 같다. 회원가입시 프로필 이미지를 등록할 수 있다. 회원가입시 이메일이 유효한지 검증해야 한다. 위의 기능을 만족하는 회원가입 기능을 만들기 위해 테스트를 진행해보아야 한다. 2번 이메일 검증의 경우 이메일로 코드를 보내 확인하는 로직이 존재하기 때문에 기본적인 이메일 형식 유효성 검증만 하면 될 것 같다. 문제 상황 회원가입을 어떻게 테스트할 수 있을까? 우선 회원가입로직은 [그림2]과 같다. 요청이 들어오면 Email형식이 맞는지, 프로필 사진이 있는지 확인 후 DB에 저장하는 식으로 진행된다. 따라서 회원가입 테스트는 두 부분을 확인하는 방향으로 가면 된다. 첫 번째는 이..
들어가며 안녕하세요 백엔드 개발자 이대영입니다. 본 글에서는 Tweaver 프로젝트에서 SSE 기능 도입중 발생한 Connection is not available 에러의 해결 과정을 기록하려 합니다. 해당 에러는 HikariCP의 Connection 고갈 문제였습니다. 힘들게 찾고 간단하게 해결했던 상황을 공유하며 성장의 발판이 되었으면 합니다. 문제 상황 Tweaver 프로젝트에서 SSE로 알림을 구현하고 서버에 적용했습니다. 로그인 이후 사용자가 SSE에 연결이 되면 저장된 알림 모두 사용자에게 갈 수 있게 구현해놓았습니다. 하지만 구현 직후, 사용자가 로그인을 한 뒤 SSE가 연결되면 몇 초 뒤에 서버가 멈춰버리는 상황이 발생했습니다. ec2에 접속해 로그를 확인해 보니 [그림1] 과 같이 Con..
들어가며 안녕하세요 백엔드 개발자 이대영입니다. 이 글에서는 Spring Cloud의 Open Feign 기능을 도입했던 과정을 소개하려 합니다. 본 글은 부족했던 시간 속에서 팀원들과 공동의 목표를 이루어 나가기 위한 과정을 공유합니다. 뿐만 아니라 경험을 기록함으로써 성장의 발판이 되었으면 합니다. 배경 및 목표 Tweaver 서비스에서는 이메일 인증 기능을 통해 서비스 사용자의 최소한의 신원을 확인하려 합니다. 휴대폰 본인 확인, 이메일 인증 정도를 생각해 봤는데요. 솔직히 말하자면 이메일 인증이 조금 더 쉬울 것 같아 이메일 인증을 도입하기로 하였습니다.😅 이메일 인증 도입을 위해서는 2가지를 생각해 볼 수 있었습니다. 1. 직접 SMTP 서버를 구축한다. - 구축에 시간이 오래걸릴 수 있다. -..
[5장]에서는 스트림 연산에 대해 알아보았다. 스트림 연산을 복습해보자면 아래와 같다. 스트림 연산은 중간 연산과 최종 연산으로 구분할 수 있다. 중간 연산은 스트림을 다른 스트림으로 변환하는 연산이다. 여러 연산을 연결할 수 있다. 중간 연산은 스트림 파이프라인을 구성하며, 스트림 요소를 소비하지 않는다. 최종 연산은 스트림의 요소를 소비해 최종 결과를 도출한다. 최종 연산은 스트림 파이프라인을 최적화하면서 계산 과정을 짧게 생략하기도 한다. [6장]에서는 컬렉터와 리듀싱 요약, 데이터 그룹화와 분할, 커스텀 컬렉터 개발에 관해 알아볼 것이다. Collector(컬렉터)란 무엇일까? 컬렉터는 자바 스트림에서 쓰이는 중요한 인터페이스다. 컬렉터 인터페이스는 스트림의 요소들을 수집하고 그룹화하고 집계하는데..
어플리케이션의 비즈니스 로직이 올바르게 동작하려면 데이터를 사전 검증해야한다. 이를 유효성 검사(validate) 혹은 데이터 검증이라 부른다. 예를 들어 어플리케이션의 여러 계층에서 들어오는 데이터를 검사하여 의도한 형식대로 값이 들어오는지 확인하는 과정이 있다. 이는 매우 중요한 부분이다. 일반적인 어플 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직은 계층별로 진행된다. 이러한 유효성 검사는 클래스 별로 분산되어 관리하기 어렵고, 의외로 검증 로직에 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있다. 또 검증해야 할 값이 많다면 검증하는 코드가 길어진다. 이러한 문제들은 코드를 복잡하게 하고 가독성을 떨어뜨린다. 이런 문제들을 해결하기 위해 자바 진영에서는 2009년부터 Bea..