728x90 프로젝트34 요만큼 ) 다중 서버에서 소켓 통신을 위해 카프카를 사용해보려고요. 도입이라는 단어를 쓰니 거창하지만가계부에서 실시간 알림또는누군가 가계부를 사용하고 있을 때 알려주는 용도로 사용하기 위해 소켓 통신을 사용하기로 하였는데기본적으로 요만큼에서는 쿠버네티스를 사용하여 다중서버를 염두에두고 있기 때문에메세지큐를 이용해 데이터를 동기화해주는 것이 중요했고많은 메세지큐 서비스 중에서도 "Kafka"를 이용해보기로 했다. 이유는 여러가지가 있지만사이드 프로젝트의 묘미는 안써본 기술 사용해보기가 아니겠는가? 카프카는 대규모 서비스에서 많이 사용하는 만큼 경험해두면 분명 도움이 될 거라고 생각했고요만큼이 대규모 서비스가 안 되리란 보장도 없고 (^^)겸사겸사 도입해보기로 했다. 내가 생각해본 서버 구조 - 로그인할때 소켓이 연결되고 로그아웃하면 연결이 끊긴다.- 요만큼 서버.. 2024. 6. 27. JWT 인증 방법을 수정했다! 여러분은 아는가? HTTP 요청 Header 길이가 길수록 보내야 할 데이터 양이 늘어나니 패킷 길이가 길어져 요청이 무거워지고 서버에 부하가 간다는 사실을? 기존 요만큼에서 인증 과정은 이랬다. 1. Authorization 헤더에서 엑세스 토큰 확인 2. 유효하지 않을 경우 쿠키에 리프레쉬 토큰 확인 그래서 인증이 필요한 요청"마다" Authorization 헤더에 엑세스 토큰 Cookie 에는 리프레쉬 토큰을 보내주고 있었다. 그런데 사실, 엑세스 토큰이 유효하다면 리프레쉬 토큰은 확인도 하지 않기 때문에 엑세스 토큰이 유효한 요청에는 굳이 쿠키까지 보낼 필요가 없는 것... 그래서 HTTP 요청을 좀 더 가볍게 하고 서버에 부하를 덜 가게 하기 위해서 인증 방법을 바꾸기로 했다! 1. 기존 인증이.. 2024. 3. 15. 요만큼 ) 여전히 개발 진행중 백엔드 개발자님도 들어오신 후 확실히 안정된 느낌으로 개발 중이다. 회의도 하고 의견도 많이 여쭤보고 있다. 회사에서 받을 수 없는 복지(...)를 여기서 대신 받는 중. 정말 정말 감사하다. ㅠㅠ 기본 가계부 쪽 백엔드 개발은 다 된 상태고 최근에 ci/cd 를 해서 특정 브랜치에 머지되면 우리 서버로 바로 적용되도록 적용되어 있다.ㅎㅅㅎ 내가 한 부분은 아니지만 나도 도커 쿠버 등이 궁금하기 때문에 요즘 따로 공부중... 언젠가 내가 직접 설정할 수 있으면 좋겠다. 요만큼의 핵심 기능은 태그를 통해 통계를 낼 수 있다는 것인데 당시 사정상 통계 기능을 내가 개발하지 않게 되어서 좀 아쉽다... 대신! 공유 가계부 기능을 추가하기로 했다. 여러 명이서 한 가계부를 공유해서 쓸 수 있는 방식이다. 이런 .. 2024. 3. 2. Test ) 간단한 단위 테스트 추가 기존 MEMO:RE 테스트 코드는 무거운 통합 테스트 코드가 포함되어 있어서 빌드 속도가 느렸당 ㅡㅅㅡ 최근 실무에서는 무거운 통합테스트보다는 여러가지의 단위 테스트를 하는 것이 낫다는 정보를 입수해 리팩토링 과정에서 간단한 단위 테스트 코드를 추가해보았다. MemoTest public class MemoTest { private Memo memo; private Long ownerId; private Long otherUserId; @BeforeEach void setUp() { ownerId = 1L; otherUserId = 2L; memo = mock(Memo.class); doNothing().when(memo).checkAuthorizedUser(ownerId); doThrow(new BadR.. 2024. 2. 22. refactor ) 예외 상황을 좀 더 멋지게 처리해보자! 사실 이전에 예외 상황을 처리하는 코드를 리팩토링했다. 그러나 1. Checked 예외를 만들면 그에 따른 Handler 를 계속 추가해줘야하는 불편함이 있다. 2. 응답이 200 OK 라면 굳이 Body 에 정상 응답이라는 내용을 담아줄 필요는 없다. 3. 서버에서는 정말 필요한 응답값 (에러 상황에 필요한 메시지와 코드) 만 응답해도 좋겠다. 라는 생각을 토대로, 코드를 수정해보기로 했다! 기존 코드 기존 로그인 컨트롤러 @PostMapping @Operation(summary = "일반 회원 로그인", description = "일반 회원용 로그인") public ResponseEntity login(@RequestBody @Valid LoginDto loginDto) throws UserNotFo.. 2024. 2. 1. refactor ) 요만큼 프로젝트 리팩토링을 하자 ! 요새 글을 쓰지 않았지만 요만큼 프로젝트는 지금도 조금씩 조금씩 진행중이다. 이번에 백엔드 개발자님이 들어오셨는데 아는 게 많으셔서 배울 게 무지 많다! 개발자님이 기존 코드를 보시고 몇 가지 컨벤션을 제안해주셨다. 필수도 있고 선택도 있었는데 모두 괜찮은 방법들이라고 생각했고 그렇다면 고칠 수밖에 없지 ! 1. 전역 변수를 지역 변수로 수정하자 기존에는 Email 서비스 등 전역 변수를 사용 중인 곳이 있었다. 그런데 싱글톤 객체에서 중간에 변경이 가능한 지역 변수를 사용할 경우 여러 스레드에서 접근을 하면 스레드 세이프 하지 않아 문제가 생길 가능성이 있다고 했다. 그래서 해당 코드를 수정해주었다.! Before private final SpringTemplateEngine templateEngin.. 2024. 1. 18. 이전 1 2 3 4 ··· 6 다음 728x90