프로젝트

Overview키즈핑 프로젝트를 진행하면서 제가 맡았던 부분중에 하나는 자녀 성향 진단이였습니다.이번 글에서는 자녀 성향 진단 로직을 구현하면서 겪었던 고민과, 이를 해결하기 위해 시도한 리팩터링 과정에 대해 이야기해보려 합니다.로직 설계자녀 성향 진단프론트가 보낸 자녀의 id 값으로 자녀를 조회한다.프론트로부터 받은 점수를 유저의 MBTI 설문 조사에 저장한다.받은 점수를 통해 자녀의 MBTI(성향)를 계산하고 정한다.자녀 성향에 MBTI 점수와 정해진 성향을 저장한다.자녀 성향 히스토리에도 저장한다.우선 위와 같이 자녀 성향 진단 로직을 정리 했습니다.간단하게 정리하면 우선 서버에서 프론트로 자녀 성향을 진단하는 질문 목록을 보냅니다.자녀는 본인에게 맞는 성향을 체크하면 프론트에서 한번에 자녀의 ..
Overview키즈핑 프로젝트를 진행하면서 REST API를 테스트하다가 이상한 이슈에 직면했습니다.컨트롤러 단에서 @RequestBody를 사용해 클라이언트의 요청 값을 받기 위한 DTO 클래스를 만들었습니다. 포스트맨으로 테스트를 해서 제가 만든 API로 요청을 보냈는데 DTO 클래스의 필드에 값이 안 들어오는 겁니다. 아래는 제가 만든 컨트롤러와 DTO 클래스입니다.컨트롤러@RestController@RequiredArgsConstructor@RequestMapping("/api/kid")public class KidController { ... @PostMapping("/mbti") public void diagnoseKidMBTI(@RequestBody KidMBTIDReque..
FitTrip 프로젝트는 MSA 구조에서 EDA를 적용한 프로젝트입니다.즉 서비스가 여러 개로 나눠진 분산 시스템 구조입니다.이러한 분산 시스템 구조에서는 데이터의 일관성을 확보하기가 상대적으로 어렵습니다.발행되지 않아야 하는 메시지가 발행되거나, 발행되어야 하는 메시지가 발행되지 않고 누락되기도 합니다. 이번 글에서는 간단한 예시와 함께, 흔히 볼 수 있는 메시지 발행, 처리 방식들의 문제점들을 짚어보려고 합니다.또한 이 문제점들을 해결하는 방법 중 하나인 Transactional Outbox Pattern을 소개하고 FitTrip 프로젝트에 적용한 과정에 대해 얘기하려 합니다. 분산 시스템에서 데이터를 전달하는 방법은 아래 글을 참고해주시면 감사하겠습니다.https://an-jjin.tistory.c..
서론이번 글에서는 유저의 실시간 온/오프 상태 처리 기능(https://an-jjin.tistory.com/44)을 구현하면서 겪었던 이슈 중 세 번째 이슈에 대해 다루겠습니다. 개발을 진행하면서 처음 구현한 로직에서 최종 로직까지의 개선 과정을 설명해 보려고 합니다.문제 상황채팅 서비스에서 유저의 웹소켓 연결 상태를 파악하여 해당 유저가 온라인인지 오프라인인지 지정하는 기능을 구현했습니다.해당 유저를 A라고 지칭하겠습니다. 유저 A의 온라인/오프라인 이벤트 데이터를 카프카의 특정 토픽으로 전송하고, 다른 채팅 서비스들이 이를 받아와 유저 A가 속한 서버(단체 채팅방)와 DM방에 있는 유저들에게 브로드캐스팅합니다.카프카에 보내는 이유는 이유는 채팅 서비스의 스케일 아웃을 고려했기 때문입니다.(관련 포스팅..
an_jjin
'프로젝트' 카테고리의 글 목록 (4 Page)