목록으로

Programming Notes

E-Market #5 - 게시글 기능 구현과 도메인 서비스로 이미지 처리하기

안녕하세요! E-Market 프로젝트 다섯 번째 이야기입니다. 오늘은 사용자 간 소통을 위한 핵심 기능인 게시글 기능을 구현한 과정을 공유하려 합니다. 게시글은 단순히 텍스트를 보여주는 것을 넘어, 사용자들이 서로 정보를 공유하고 의견을 나눌 수 있는 중요한 통로가 됩니다....

안녕하세요! E-Market 프로젝트 다섯 번째 이야기입니다. 오늘은 사용자 간 소통을 위한 핵심 기능인 게시글 기능을 구현한 과정을 공유하려 합니다. 게시글은 단순히 텍스트를 보여주는 것을 넘어, 사용자들이 서로 정보를 공유하고 의견을 나눌 수 있는 중요한 통로가 됩니다. 이번 개발에서는 게시글의 기본적인 작성 및 조회 기능과 더불어 이미지 첨부 기능을 구현하는 데 집중했습니다. 좋아요와 댓글 기능은 추후에 더욱 심도 있게 다룰 예정입니다. 이번 글에서는 게시글과 이미지 기능 구현 과정에서 어떤 고민을 했고, 이를 어떻게 해결했는지 자세히 풀어보겠습니다.

개발 여정 돌아보기

사실 게시판 기능 자체는 개발 경험이 있는 분들에게는 익숙한 주제일 수 있습니다. 그럼에도 불구하고 이번 포스팅을 준비한 이유는, 단순히 기능 구현에 그치지 않고 고민했던 지점들을 기록하고 공유하며 함께 성장하고 싶었기 때문입니다. 게시글과 이미지 처리 과정에서 발생했던 기술적인 고민과 해결 방안을 중심으로 이야기를 풀어보겠습니다.

먼저 게시글 엔티티를 설계할 때, 어떤 필드를 포함해야 할지 고민했습니다. 제목, 내용, 작성자, 작성일시 등 기본적인 정보 외에 어떤 정보를 더 추가해야 사용자 경험을 향상시킬 수 있을지 다양한 의견을 나누었습니다. 또한, 게시글의 내용이 길어질 경우를 대비하여 데이터베이스에 저장할 때 효율적인 데이터 타입을 선택하는 것도 중요한 고려 사항이었습니다.

이미지 첨부 기능은 단순히 파일을 업로드하고 저장하는 것 이상의 복잡성을 가지고 있었습니다. 사용자가 여러 장의 이미지를 첨부할 수 있도록 설계해야 했고, 이미지 파일의 용량 제한, 저장 방식, 그리고 게시글과 이미지 간의 관계를 어떻게 설정할지 고민해야 했습니다. 특히, 이미지 파일의 용량이 클 경우 서버에 과부하가 걸릴 수 있으므로, 이미지 리사이징이나 압축과 같은 추가적인 처리 과정이 필요했습니다.

이러한 고민들을 해결하기 위해 도메인 서비스 패턴을 적용하여 이미지 처리 로직을 분리했습니다. 도메인 서비스는 특정 엔티티에 종속되지 않고, 여러 엔티티에 걸쳐 비즈니스 로직을 수행하는 역할을 합니다. 이미지 업로드, 리사이징, 저장과 같은 복잡한 이미지 처리 로직을 도메인 서비스로 분리함으로써, 코드의 응집도를 높이고 유지보수성을 향상시킬 수 있었습니다.

예를 들어, ImageUploadService라는 도메인 서비스를 만들어서 이미지 업로드와 관련된 모든 로직을 캡슐화했습니다. 이 서비스는 사용자가 업로드한 이미지를 받아서 유효성 검사를 수행하고, 필요에 따라 리사이징하거나 압축한 후, 적절한 저장소에 저장하는 역할을 담당합니다. 이렇게 도메인 서비스를 활용하면, 게시글 엔티티는 이미지 처리와 관련된 복잡한 로직에 직접적으로 관여하지 않고, 자신의 핵심 역할에 집중할 수 있습니다.

또한, 이미지 저장 방식을 결정하는 데 있어서도 여러 가지 선택지가 있었습니다. 파일 시스템에 직접 저장하는 방식, 클라우드 스토리지 서비스를 이용하는 방식 등 각각 장단점이 존재했습니다. 파일 시스템에 저장하는 방식은 구현이 간단하지만, 서버의 디스크 공간을 차지하고, 확장성이 떨어진다는 단점이 있습니다. 반면, 클라우드 스토리지 서비스를 이용하면 확장성이 뛰어나고, 이미지 전송 속도도 향상시킬 수 있지만, 추가적인 비용이 발생한다는 단점이 있습니다. 프로젝트의 규모와 예산을 고려하여 가장 적합한 저장 방식을 선택해야 했습니다.

다음 단계를 향하여

이번 게시글 기능 구현을 통해 사용자 간 소통의 기반을 마련할 수 있었습니다. 하지만 아직 갈 길이 멉니다. 앞으로 좋아요 및 댓글 기능 구현, 검색 기능 추가, UI 개선 등 다양한 과제들이 남아있습니다. 특히, 사용자 경험을 향상시키기 위한 UI 개선에 많은 노력을 기울일 예정입니다.

다음 포스팅에서는 좋아요와 댓글 기능 구현 과정을 자세히 다룰 예정입니다. 좋아요 기능은 사용자들이 게시글에 대한 공감을 표현하고, 인기 있는 게시글을 쉽게 확인할 수 있도록 도와줍니다. 댓글 기능은 사용자들이 게시글에 대한 의견을 공유하고, 서로 소통할 수 있는 공간을 제공합니다. 좋아요와 댓글 기능은 게시글 기능을 더욱 풍성하게 만들어 줄 것입니다.

E-Market 프로젝트는 아직 진행 중이며, 앞으로도 끊임없이 개선해 나갈 것입니다. 여러분의 지속적인 관심과 응원 부탁드립니다. 그리고 언제든지 피드백을 주시면 감사하겠습니다. 함께 만들어가는 E-Market 프로젝트에 많은 참여 부탁드립니다!