웹 프로젝트 진행 중 Spring boot를 활용하는 백엔드 단에서 PPT파일의 슬라이드를 수정하는 기능을 구현해야 했다.
해당 기능이 필요했던 이유와 구현한 내용에 대해 정리한다.
Spring boot, React를 활용한 외주 웹 프로젝트를 진행하고 있는데
DB에 저장된 유저의 답변 내용들을 활용해 이미 있는 Default ppt파일의 특정 슬라이드들을 수정해서 저장하는 기능을 구현해야했다.
진행하고 있는 프로젝트에 대해 간략히 설명하자면
클라이언트, 컨설턴트 로 유저가 구분되어있고 클라이언트가 작성한 답변들을 토대로 컨설턴트가 답변에 대한 피드백 및 보고서를 작성할 수 있게 도와주는 웹 인프라를 만드는 것이였다.
사실 처음에 기획했던 방향은 웹 내에서 테이블형식의 ui를 만들고 사용자가 간단히 내용을 수정하는 것이였다.
하지만!! 갑자기 클라이언트 측에서 웹에서 ppt처럼 사진도 원하는 위치에 넣고 글자 크기, 색상 등을 자유자재로 할 수 있는 유저 자율성이 매우 높은 수정을 요구하였다..😹
해당 요구사항을 웹상에서 가능하게 하려면 너무나도 많은 노력이 필요하기에.. (유저 자율성이 높은 powerpoint, 메모앱을 직접 구현?? 난이도가 급상승..) 프로젝트 방향이 많이 바뀌게되며 주어진 시간 여건상 어렵다고 판단하였다.
해결방안을 모색하다가 ppt 파일에서 db에 저장된 답변들을 활용해 테이블을 만드는 것이 가능하다면 생성한 ppt파일을 컨설턴트가 다운받아 원하는 형식으로 자유롭게 수정한 후 파일을 업로드 하면 s3에서 해당 파일을 저장시켜 파일을 관리하도록 하는 방안을 생각할 수 있었다.
이에따라 처음 요구한 기능이 어려운 이유와 생각한 절충안을 클라이언트 측에 설명드렸는데 다행히 그렇게 진행해도 괜찮을거 같다고 컨펌해주셨다.
사실 코드로 ppt파일을 수정하는 게 과연 가능한가?... 라는 의문을 가지고 해당 기능을 구현할 수 있는지 서칭한 결과
Apach POI 라이브러리를 활용해서 JAVA에서 ppt파일을 읽고 쓸 수 있다는 것을 확인할 수 있었다. 한 줄기 희망을 맛볼 수 있었다.🤗

Apach POI 라이브러리:
Java에서 Microsoft Office 파일 형식을 읽고 쓰는 데 사용되는 라이브러리이다.
Microsoft Word, Excel, PowerPoint등의 파일 형식을 다룰 수 있으며, 개발자들이 Java 프로그램에서 이러한 파일들을 생성, 수정 및 분석할 수 있도록 지원한다.
이에 따라 처음 생각한 구조는
컨설턴트가 유저의 답변과 피드백을 웹상의 테이블에서 최종 수정하고 데이터들은 DB에 저장한다.
해당 데이터를 가지고 AWS S3에 저장된 default ppt파일의 슬라이드를 채워서 새로운 ppt파일을 생성한다.
컨설턴트가 ppt파일을 다운받아 원하는 형식으로 자유롭게 수정한 후 최종 보고서 ppt파일을 웹을 통해 서버에 업로드하고 이를 S3에 저장한다.
이후 클라이언트가 해당 보고서를 확인할 수 있도록 한다.
위와 같이 정리했다.
서버리스 환경을 채택할 경우 AWS Lambda를 이용해 직접적으로 s3의 파일을 수정할 수도 있다는 것을 배울 수 있었다. Lambda는 특정 이벤트를 트리거로 실행되는 함수이다.
백엔드 서버를 구축하고 있는 환경에서 굳이 Lambda를 사용할 필요는 없었다.
코드에 대한 내용까지 글에 정리하면 너무 복잡해질 것 같아서 결과에 대해서만 정리하겠다.

만들어진 초본 ppt파일을 다운

다운된 ppt파일 확인 및 추가 수정후 다시 웹상에서 업로드

고객이 최종 보고서를 확인

처음에 생각하지 못한 방향으로 요구사항이 바뀌면서 많이 당황스럽고 팀원들과 함께 해결방안을 찾기 위해 고생했던 것 같다. 다행히 현 상황에 맞는 해결책을 찾아 만족스러운 결과를 만들 수 있었다.
스스로 기획한 서비스를 만드는게 아니라 의뢰인이나 발주자의 아이디어에 의한 서비스를 개발해주는 상황에서는 이해한 내용이 맞는지 개발 기획에 대한 소통이 매우 중요하다고 생각들었다. 그리고 웬만하면 이러한 소통은 개발전에 모두 마치고 요구사항 리스트를 완벽히 정리한 후 계약하는 것이 중요하다고 크게 느꼈다.
첫 외주를 하면서 이런 부분에 대해 잘 알지 못해 고생을 했던 것 같고 어찌 보면 요구사항을 중요하게 확인하는 SI업체의 입장을 이해해 볼 수 있는 값진 경험을 해본 것 같다.