사이드프로젝트 9

[EggChatter] CodeRabbit을 활용한 PR 코드 리뷰 자동화

혼자 사이드프로젝트를 하다보면 코드리뷰를 받을 수 없다는 점이 늘 아쉽게만 느껴졌다.그래서 자동으로 코드리뷰를 해주는 툴을 찾아보다가 CodeRabbit이라는 AI 코드리뷰 툴을 찾게 됐다. CodeRabbit 사이드 프로젝트에 붙여보기1. 회원가입계정을 생성하면 아래와 같은 화면이 나온다.여기서 나의 깃허브 계정을 통해 CodeRabbit을 적용한 레포지토리들을 동기화하고, 이를 대시보드에서 확인할 수 있다. 2. coderabbbit을 적용할 repository 추가우측 상단에 있는 Add Repositories 버튼을 클릭하면, 아래와 같이 CodeRabbit을 적용할 계정과 oranization을 선택할 수 있는 화면이 나타난다. 계정이나 Organzation을 선택하면, 그에 속한 레포지토리에 ..

[EggChatter] 테스트코드 실행문 스크립트 파일로 간소화하기

예전에 회사에서 버전 브랜치를 실제 서비스에 배포할 때, 스크립트 파일을 이용해서 굉장히 편하게 배포한 적이 있다. 4개국을 서비스하고 있었으며, 국가 당 12종류의 서비스 서버가 존재했기 때문에 버전브랜치를 명령어 일일이 작성해서 배포하는 일은 헷갈려서 휴먼에러가 발생할 수도 있었고, 48번의 명령어를 입력하는 게 여간 귀찮은 일이 아니였다. 이런 문제 때문에 배포용 스크립트 파일이 있었다.국가와 서비스에 대한 옵션값을 받아서 한 번의 명령어로 모든 서비스를 배포하거나, 일부만 배포할 수 있었다.이 이야기를 하는 이유는, 실행 명령어를 일일이 작성하는 게 썩 귀찮은 일이며 미미한 오탈자에도 취약하다고 생각했기 때문이다. 그래서 테스트 코드를 더 편리하게 실행할 수 있는 스크립트 파일을 만들어 사용하려고..

[EggChatter] pytest, pytest-asyncio와 Faker로 테스트 환경 구축하기

HTTP 통신 서버의 테스트 환경을 구축해보았다.테스트 환경에는 pytest, pytest-asynctio, faker 를 사용했다. 설치모듈pytestThe pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries.공식문서 홈페이지에서 부터 말하듯이 파이썬 기반의 간단하면서도 확장성있는 테스트 프레임워크다.회사에서도 써본 적이 있어서 Learing curve가 낮았기 때문에 이 테스트 프레임워크를 선택했다.pytest-asyncioFastAPI는 비동기 기반의 프레임워크이기 때문에, 비동기 처리를 지원..

[EggChatter] DB 설계와 SQLAlchemy로 모델 정의

MVP사용자 등록/로그인 : 카카오 로그인만 지원채팅 기능 :1:1 실시간 채팅가능초대된 유저 혹은 친구관계인 유저와 채팅가능이스터에그 등록 : 최대 3개의 이스터에그 생성가능. ( 수정 및 삭제도 가능 )이스터에그 힌트 기능 : 유저가 힌트를 받을 수 있는 기능.대화 중 이스터에그 트리거 : 채팅 도중 특정 단어가 입력되면 이스터에그가 트리거됨.ERD 다이어그램Users 테이블카카오 로그인 외에도 다른 소셜 로그인 및 자체 로그인을 지원할 수 있도록 설계ChatroomUsers 테이블채팅방과 유저를 다대다로 매칭하기 위해 필요한 관계테이블MessageReadStatus 테이블다대일 채팅 설계를 대비하여, 읽은 사람을 추적하는 로직에 필요한 테이블 설계Friend 테이블채티방 초대로 가입하게 된 유저가 ..

[ 기록의 정원 ] Error:Field validation for *** failed on the 'required'

문제 상황1. 요청 필수필드값을 모두 채웠는데, 에러가 발생한다... 축의금 기록을 테스트 하는데, 버튼이 눌린 뒤 반응이 없었다.( 아직 FE분이 에러 토스트 메세지 기능을 붙이기 전이였음.. )뭐가 문제인가 싶어서 네트워크 탭을 열어보니까 400에러와 함께 아래와 같은 response가 내려왔다.{ "detail": "Key: 'CreateExpense.IsInvited' Error:Field validation for 'IsInvited' failed on the 'required' tag \nKey: 'CreateExpense.Name' Error:Field validation for 'Name' failed on the 'required' tag \nKey: 'CreateExp..

[ 포텐데이 X Ncloud ] 기록의 정원과 NCP 사용 후기

포텐데이에 참여하자마자 NCP 크레딧을 웰컴키트로 제공해주었다.서버비를 어떻게 충당할까 걱정했었는데, 100만원 상당의 크레딧 제공이라니..정말 단비같은 존재가 아닐 수 없었다...🥹 Q. 기록의 정원 프로젝트 소개 부탁드립니다. 저희 T키타카 팀에서 개발한 기록의 정원은 내가 보낸, 그리고 내가 받은 축의금을 입력하여 지인들과 나눈 마음을 기록하는 서비스입니다. 10일 동안 진행한 프로젝트에는 결혼식에 관련된 비용만 기록할 수 있으나 추후 경조사비용을 모두 기록할 수 있게끔 디벨롭 중인 서비스입니다. 저희 서비스의 핵심가치는 경조사 기록의 편리함인데요. 이 핵심가치를 극대화 하기 위해 이용자들이 경조사 비용을 Excel로 정리한다는 것을 염두해 두었고,Excel을 업로드할 경우 자동으로 요약・정리해주..

[ 기록의 정원 ] 게이트웨이 서버에 인증・인가 적용기 ( 2편 )

들어가기 앞서...게이트웨이 서버에 인증・인가 적용기 ( 1편 )https://kojub.tistory.com/13 [ 기록의 정원 ] 게이트웨이 서버에 인증・인가 적용기 ( 1편 )게이트웨이 서버라우팅 역할 게이트웨이 서버는 HTTP 요청을 다른 프로토콜로 변환해주어서 클라쪽에서 다른 프로토콜을 신경쓰지않고 통신할 수 있게끔하는 역할을한다. 약간 중간다리 같은kojub.tistory.com 로그인 시 user서버에서 accessToken을 생성하여 response로 내려주었고,token값을 header에 보내 다른 프로토콜로 API 요청을 할 때마다 회원 여부를 체크하여 통신을 할 수 있게끔 게이트웨이 서버를 구축했다.   RefreshTokenaccessToken으로만 인증・인가 처리를 하다보니 To..

[ 기록의 정원 ] 게이트웨이 서버에 인증・인가 적용기 ( 1편 )

게이트웨이 서버라우팅 역할 게이트웨이 서버는 HTTP 요청을 다른 프로토콜로 변환해주어서 클라쪽에서 다른 프로토콜을 신경쓰지않고 통신할 수 있게끔하는 역할을한다. 약간 중간다리 같은 역할을 한다고 생각하면 된다아아아ㅏ 인증인가 역할 뿐만 아니라, 다른 프로토콜로 접근하기 전에 유효한 회원인지 검증하는 역할을 하기도 한다."기록의 정원" 프로젝트는 로그인한 회원들만 서비스를 이용할 수 있기 때문에  게이트웨이 서버에서 이 인증인가 로직을 반영하기로 했다. 인증방식 전략 ( JWT )세션 저장소 같은 별도의 스토리지를 두지 않고,시크릿 키 암호화를 통해 보완성이 늘어나는 이점이 있는 JWT방식으로 회원인증을 하기로 정했다.  전략토큰의 유효성이 어긋날 경우 게이트웨이 서버쪽에서 에러를 발생시킨다. - 1차로..

[ 기록의 정원 ] MSA 도입과 역할분담

들어가기5월 17일부터 10일 동안만 서비스 하나를 개발하는 프로그램인 비사이드 프로젝트에 참가하게 되었다.팀 빌딩은 각자가 알아서 진행해야 하는데, 역시나 파이썬으로 백엔드 개발하는 사람은 나밖에 없었다 ㅠㅠ ( 팀 합류 후 느즈막히 한 분 나타나긴 하심 )  그래서 언어나 프레임워크를 제외한 기술스택이 비슷한 사람 혹은 프로젝트에 임하는 가치가 비슷한 사람을 찾기로 했다.마침 눈에 띄는 분이 계셨는데, Go언어로 개발을 하시고 GCP 내 여러 가지 기능들을 사용했다고 한다.조금은 마이너한(?) 백엔드 언어와 GCP기능을 사용해봤다는 점이 나랑 비슷해서 같이 팀하자고 말하려는 순간! 현태님이 먼저 같이 하자는 제안을 하셨다 !! 심지어 이미 디자이너 2명, FE 1명, 기획 1명, BE 1명 이렇게 조..