포트폴리오를 전체 화면을 기준으로 만들었습니다. 데스크탑 환경에서 확인해 주시면 더 편하게 보실 수 있습니다. 감사합니다!
(계속해서 포트폴리오를 제작하고 있습니다.)

<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-80b6-99ca-007ae539a3d4" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-80b6-99ca-007ae539a3d4" width="40px" />
010-5623-6382
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8032-9ebf-007a5492d098" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8032-9ebf-007a5492d098" width="40px" />
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-80a0-bf93-007a38e57c8f" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-80a0-bf93-007a38e57c8f" width="40px" />
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8083-a686-007abb0f8598" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8083-a686-007abb0f8598" width="40px" />
</aside>
<aside> 📝
안녕하세요, 배움을 멈추지 않는 백엔드 개발자 허세진입니다.
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8081-a6f4-007aa0aa58ae" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8081-a6f4-007aa0aa58ae" width="40px" />
Java
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8046-99ae-007a159cdc39" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8046-99ae-007a159cdc39" width="40px" />
Spring Boot
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8011-9b61-007a244db4e9" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8011-9b61-007a244db4e9" width="40px" />
MySQL
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22808b8b-68b9-808a-93d0-007a7a913797" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22808b8b-68b9-808a-93d0-007a7a913797" width="40px" />
FastAPI
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22808b8b-68b9-80e9-9c6b-007a3d2b9ecc" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22808b8b-68b9-80e9-9c6b-007a3d2b9ecc" width="40px" />
React
</aside>
<aside> <img src="attachment:3786ea6c-0167-4971-b80d-11152c8d5f4b:image.png" alt="attachment:3786ea6c-0167-4971-b80d-11152c8d5f4b:image.png" width="40px" />
Styled-Components
</aside>
<aside> <img src="attachment:31cace00-8046-42ad-b450-821167881901:image.png" alt="attachment:31cace00-8046-42ad-b450-821167881901:image.png" width="40px" />
TypeScript
</aside>
<aside> <img src="attachment:25919397-3096-4e6e-9a83-096167983985:image.png" alt="attachment:25919397-3096-4e6e-9a83-096167983985:image.png" width="40px" />
Recoil
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-80c1-a39e-007ae128dc6c" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-80c1-a39e-007ae128dc6c" width="40px" />
ChatGPT
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8005-b8de-007a2598f084" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22708b8b-68b9-8005-b8de-007a2598f084" width="40px" />
Claude
</aside>
<aside> <img src="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22c08b8b-68b9-80d5-8a50-007a3b580e96" alt="notion://custom_emoji/2e72e3ca-bdad-4f56-89f2-f540aa4582e3/22c08b8b-68b9-80d5-8a50-007a3b580e96" width="40px" />
</aside>
RE:MEDY는 어떤 장소에 음악과 함께 한마디를 드랍해서 그 장소의 추억과 음악을 공유하는 서비스입니다!
SRP 원칙 위반 문제
기존에는 MyDroppingService가 직접 DroppingService를 의존하여 내 드랍 데이터를 조회했습니다. 이 경우 MyDroppingService의 책임이 많아지게 되어 SRP(단일 책임 원칙)을 위반하게 됩니다. 그래서 이벤트 퍼블리셔를 도입함으로써 MyDroppingService의 책임을 줄이고 이벤트 리스너를 통해 데이터를 처리하는 방식으로 변경했습니다. 이로써 서비스 간 결합도를 낮추고, 책임 분리를 명확하게 하여 SRP(단일 책임 원칙)위반 문제를 해결할 수 있었습니다.
<aside> 🚩
</aside>