전체 글
[Spring Boot] Test Builder Pattern으로 BDD를 표현할 수 있을까?
💡 예능적인 발상일 뿐, 실제로 시도하기엔 별로 좋은 방법이 아니라고 생각합니다. 아이디어만이라도 주워가실 분들은 읽어보세요!📕 목차1. Introduction2. Test Builder Pattern for Domain Rule3. Conclusion1. Introdution 📌 What's the problem?모든 코드는 깃헙에서 확인 가능합니다. 구현하고 있던 Usecase는 "채팅방에 메시지가 전송되었을 때, offline 혹은 백그라운드, 다른 뷰를 보고 있던 사용자에게 채팅 메시지를 푸시 알림으로 보여준다"였다.offline인 사용자의 경우 웹 소켓이 연결된 서버가 없기 때문에, 반드시 relay 서버에서 채팅 큐를 관찰해야만 하는 상황. 푸시 알림을 전송할 비즈니스 규칙은 본질적 복잡..
[Spring Boot] Long 타입 PK는 Redis Sorted Set의 score로 사용할 수 없다. (with. TSID)
📕 목차1. Introcution2. How to Resolve?3. Lexicographical Sorting4. Consideration1. Introduction 📌 As-is빠른 저장 및 조회를 위해 Redis에 채팅 이력을 저장하여 관리하고 있는 상황.이 때, 채팅 아이디의 시간 기반 정렬(Time based sequence), 고유성(Unique)과 높은 동시성(High Concurrency)을 보장하기 위해 TSID를 사용하기로 결정했었다. 그리고 이 값들은 처음에 Hash로 바로바로 캐싱을 했었으나, 다음과 같은 문제로 Sorted Set을 사용하기로 결정했었다.채팅 조회의 경우 범위 탐색이 빈번하게 발생함.해시 자체는 고유성을 보장하지만, 저장 순서가 보장되지는 않음. (id가 뒤늦게..
[Spring Boot] 도메인 비즈니스 규칙과 멀티 모듈 아키텍처 설계
💡 DDD를 제대로 공부해본 적 없는 학부생 수준의 조잡한 포스팅일 뿐이니 참고만 해주세요!참고로 DDD를 다루는 레퍼런스들이 대부분이 너무 어려운 개념으로 설명을 하는 게 마음에 안 들어서, 나름대로 쉬운 언어를 선택하려고 노력은 했으나, 그 과정에서 오류가 있을 수 있습니다.📕 목차1. Introduction2. Responsibility of Lower-level Modules3. Architecture Improvment4. Reflection and Future Direction1. Introduction 📌 As-is [Spring Boot] 프로젝트 멀티 모듈화 고찰💡 해당 포스트는 필자의 빈약한 이해 지식을 기반으로 한 프로젝트 멀티 모듈화입니다.개발이 진행됨에 따라 추후 지속적으로..
[PM 회고록] PM과 개발자 사이: 학부생 프로젝트에서 마주친 위기와 성장의 기록 (with Agile)
📕 목차1. Introduction2. Communication3. Motivation4. Architecture Assessment5. Conclusion1. Introduction 📌 Motive올 한 해, 학부생 프로젝트의 PM(이자 백엔드이자, 이것저것 개발자인..)을 맡으면서, 프로젝트 시작 전에 소프트웨어 공학 시간에 배운 애자일 방법론을 적용하자고 팀원들을 설득했었다.사전 준비를 철저히 하기 위해, 애자일에 대해 정말 많은 공부를 하고 관련 글들을 참조했고, 심지어 교수님과 현직 개발자 분들께 자문을 구하기도 했다.그러나, 그럼에도 불구하고 수많은 우여곡절이 있었다. 그 중에서 가장 굵직한 스토리에 대해서는 한 명이라도 도움이 될 수 있도록 꼭 적어놓고 싶었다. (미리 이야기하지만, 수치..