본문 바로가기

전체 글

(69)
Spring / CQRS, 코드로 알아보기 CQRS를 검색해 보면 관련된 글들이 많이 나온다. Query와 Command를 나눈다는 이야기인데 이것만으로는 실제 CQRS를 적용하기 위해서는 더 구체적으로 알아야 할 필요가 있다. 이번 포스팅에서는 CQRS가 필요한 구체적인 예시와 더불어 어떻게 구현하는지에 대한 간단한 예제를 다뤄보려 한다. 목차 1. 프로젝트 구조 설정 2. 문제점 및 한계 3. CQRS 적용 3-1. Query 모델 만들기 3-2. Query 모델과 Command 모델 동기화 프로젝트 구조 설정 '학생기록부' 시스템이 있다고 가정해 보자. Entity는 학생, 부모(각각 아버지, 어머니)가 있고 영어 성적, 수학 성적으로 구성되어 있다. 그리고 학생의 아래 정보들을 요구하는 api 있다고 가정해 보자 @AllArgsConstr..
AWS Beanstalk로 spring프로젝트 배포 정리 이번 포스팅에서는 beanstalk로 spring 배포 이후, 실제 운영에서 필요한 설정들을 어떻게 할 수 있을지 모아 정리해보겠습니다. 0. 들어가며 목차 1. beanstalk에 배포할 zip파일 만들기 2. beanstalk 구축하여 zip파일 배포해보기 3. dev서버와 prod서버 구분하기 4. DB정보등 민감한 정보를 yml에 포함시키지 않는 방법 5. 스크립트로 배포 자동화 6. logback log를 cloudwatch로 전송 프로젝트 구성 Spring 버전: 3.1.1 언어: kotlin 빌드: gradle-kotlin 1. beantalk에 배포할 zip파일 만들기 1-1. 준비 먼저 간단한 spring 프로젝트를 준비합니다. yml에서 property를 읽어 응답으로 내려주는 api를..
회고 / 2023 상반기 올해 초 회고를 작성하면서 반년회고를 하겠다고 다짐했었다. 그리고 그 반년이 되었다. 시작해 보겠다. 다양한 기술 도입 시도 및 인프라 개선(feat. 토이프로젝트...) [인프라 개선] 작년에 입사한 프론트 개발자의 온보딩이 안정적으로 완료되면서 이전보다 개발팀에 여유가 생기게 되었다.(1인 체제에서 안정적인 2인 체제로!) 그래서 이번 상반기에는 인프라적으로 다양한 시도와 개선을 해볼 수 있었다. 백엔드는 kotlin으로 마이그레이션도 했고 배포 인프라도 AWS Elastic Beanstalk를 적용해 보았다. 프론트는 yarn berry로 배포 시간도 단축하고 yarn workspace로 중복된 코드를 최소화하기도 했다. 이렇게 결과만 말하니 간단해 보이는데 사실 그 과정이 쉽진 않았다. 특히 프론..
책 / 애자일 프랙티스 애자일 프랙티스 / 벤캣 수브라마니암, 앤디 헌트 애자일 프랙티스 현장에서 바로 실천할 수 있는 실용적인 애자일 프랙티스만을 엄선해 담았다. 총 45개의 애자일 프랙티스로 구성되어 있으며 사례중심의 각 프랙티스는 완결된 해결책을 제공한다. www.aladin.co.kr 애자일한 팀을 구축하고, 애자일한 소프트웨어를 만들기 위한 내용들을 담고 있다. '팀 문화적으로'와 '코드 레벨'에서의 애자일을 실현하기 위한 지침서 같은 느낌이다. 핵심 내용을 정리하면서 지금 우리 팀은 그리고 나는 얼마나 잘 애자일을 행하고 있는지 점검해 보았다. 비난은 버그를 수정하지 못한다. 요약: 버그 등의 문제가 발생했을 때, 범인을 색출하고 비난하는 것이 아니라 문제 규정하고 원인을 분석해서 문제해결에 초점을 맞추는 것 잘했거..
회고 / 2022년 어떻게 갔는지 모르는 2022년이었다. 시간이 빠르다빠르다 하지만 스타트업에서의 시간은 더 빠른 것 같다. 정신없이 지내다보니 시기를 놓치기도 했고 솔직히 약간은 귀찮아지기도 해서 안 쓰고 있었는데, 지인 개발자들이 성실히 회고를 작성하는 것을 보고 자극받아 늦었지만 한 해를 돌아보며 회고를 작성해 보았다. 개발 '회고를 해볼까?' 하면서 가장 먼저 들었던 생각은 '1년 동안 어떤 개발을 했는가' 였다. 아래 이미지는 얼마 전에 회사에서 팀별로 한 해를 돌아보고 결산을 하는 자리를 가지기 위해 정리했던 문서 중 일부이다. 하루하루 지나갈 때는 몰랐는데 매달 서너 개의 크고 작은 기능들이 새롭게 추가되고 업데이트되었었다. (돌아보니 뿌듯하기도 하고 감회가 새롭..) 이 중에서 가장 기억에 남는 개발은 회계..
@TransactionalEventListener 사용시 주의할 점(feat. Entity 수정 삭제) 모든 코드는 Github 에 있습니다. 0. 들어가기에 앞서 다음과 같은 요구사항이 있다. 1. 회원 탈퇴를 할 수 있다. 2. 탈퇴시 해당 회원의 구독 정보가 삭제된다. 이를 아래와 같이 이벤트 방식으로 구현했을 때 과연 아래 코드는 잘 동작할까? 서비스 코드 @Service public class MemberService { private final MemberRepository memberRepository; private final ApplicationEventPublisher eventPublisher; public MemberService(MemberRepository memberRepository, ApplicationEventPublisher eventPublisher) { this.mem..
'단위 테스트 - 생산성과 품질을 위한 단위 테스트 원칙과 패턴'을 읽고 책 링크 단위 테스트 단위 테스트에 대한 오해를 바로잡고, 올바른 단위 테스트에 대한 원칙, 테스트를 작성하는 스타일과 효과적인 테스트를 위한 소프트웨어 아키텍처를 이해할 수 있다. 또한 단위 테스트를 통합 www.aladin.co.kr 들어가며... 나의 경험 자바에서 테스트 코드라는 개념을 처음 알게 되었을 때 충격을 받았다. 내가 짠 코드에 대해 불안함을 해소시켜줄 수 있는 혁신적인 도구에 감탄했다. 하지만 서서히 형식적으로 테스트 코드를 작성하게 되었다. 이내 테스트는 통과하지만 버그가 존재하는 경우가 발생했다. 이 또한 충격적이었다. 테스트에 투자한 나의 시간과 노력이 물거품이 돼버린 경험은 나를 되돌아보게 했다. 그 후에는 정말로 꼼꼼하게 테스트를 작성했다. 심하게 꼼꼼했다. 프로덕션 코드보다..
1년차 회고 입사한 지 1년이 지났다. 힘든 점도 많았고, 좋은 추억 또한 많았다. 정말 다사다난했던 1년, 그동안의 회고를 작성해보려고 한다. 입사 ‘우아한테크코스’에서 진행한 취업 박람회를 통해 지금의 회사, 마이페어를 만났다. 해외 박람회 참가 플랫폼이라는 신선한 도메인에 끌렸고, 코로나로 인한 해외 왕래에 대한 제약이 풀리면 성공할 비즈니스 같았다. 하지만 여러가지 조건 중, 한 가지 고민되는 포인트가 있었다. 사수가 없다는 것...! 그냥 백엔드 개발자가 없었다.(기존 백엔드 개발자가 한 명 있었지만, 개인 사정으로 인해 내가 입사 후 퇴사할 예정이었다.) 솔직히 정말 크리티컬한 부분이었다. 이 문제 때문에 정말 많이 고민했던 것 같다. 나는 이제 신입 개발자인데 혼자 개발팀을 이끌어가는 것이 상상이 안됐다..