본문 바로가기
Project/preprint-cloud-service

preprint-cloud 서비스 개발과정 & 10개월간의 운영 후기 (회고록)

by 지식을 쌓는 개구리 2024. 8. 30.

여는 글

법인을 설립하고 처음으로 계약을 통해 매장운영을 한지 딱 1년이 되는 시점 & preprint-cloud 서비스를 개발하고 유지보수, 운영한 지 10개월이 되는 시점에서 이 경험을 하기 전과 후의 느낀 점 & 배운 점에 대해 잊지 않고 후에 읽어보기 위해서 글을 작성하게 되었다.

 

우리 창업 팀은 knocker라는 법인을 설립하고 다양한 프린트 솔루션을 지원하려는 목적으로 preprint라는 사내 프로젝트를 기획하여 2023.09월부터 진행하고 있다. 법인의 사정으로 preprint의 본 프로젝트인 프린트 예약 서비스 개발 과정이 늦어지게 되는 바람에 일반적인 방식의 무인 프린트카페만을 운영하고 있는 상황이었다.

 

이런 배경 상황에서 운영을 하면서 "내가 기존 프린트 방식에 불편함을 느꼈던 경험" & "좀 더 이러이러한 부분이 개선하면 좋겠다.."라는 개선점을 정리하여 예약 프린트 서비스를 진행하기 전 먼저 개발하고 사용자분들에게 지원한 서비스가 바로 preprint-cloud 서비스이다.

 

그렇게 preprint-cloud서비스는 2023.11월에 개발 완료해서 현재인 2024.09월까지 잘 운영되고 있다.

 

preprint 매장 & 웹 사이트 영상

[명지대학교 인문캠퍼스 학생회관 1층 preprint 매장]

 

[preprint-cloud 웹 사이트 진행 매커니즘]

 

[preprint-cloud 웹 사이트 이용자 현황]

=> 2024년 09월 01일 기준 663명의 사용자가 가입하여 서비스를 이용 중에 있다.

 

[preprint-cloud 주소 및 접속 방법]

=> preprint cloud로 구글 검색

주소: https://preprintcloud.com

 

메인페이지 | pre-print

preprint cloud

preprintcloud.com

 

 

preprint-cloud 서비스 소개 및 개발 계기

preprint-cloud 서비스는 사용자의 파일 출력 및 파일 관리의 편의를 돕고자 개발한 웹 서비스이다.

기존에 프린트 카페에서 파일을 출력하기 위한 매커니즘은 구글, 네이버 메일을 통해 미리 출력하고자 하는 파일을 전송 후 프린트 카페의 데스크톱에서 해당 소셜 플랫폼에 로그인 후 파일을 출력하는 방식이다.

이 부분에 있어 사실 너무 비효율적이고 불편하고, 보안에 있어서도 사용자로 하여금 외부 환경에서 소셜 로그인을 진행하기에 보안의 측면에서, 편의성의 측면에서 불편함을 야기하고 거리낌, 불편함이 있었다.

 

"이와 같은 문제를 해결하고 사용자의 편의를 위하여 출력하고자 하는 파일을 웹 상에서 보관하면 어떨까?"

"이를 로그인 없이 파일 비밀번호로 검색 후 출력할 수 있도록 지원하면 어떨까?"

 

라는 생각이 들게 되어, 파일 출력과 보관에 편의성을 더한 preprint-cloud 서비스를 생각해 내게 되었고, 직접 피그마, db, 웹 서비스를 설계하고 개발하게 되었다.

 

 

개발 과정

preprint-cloud를 개발하려고 마음먹었지만 막상 나는 준비가 되어있지 않았던 상황이었다.

서비스 개발의 경험도 없었고, 배포라는 것의 정의도 몰랐으며, 웹의 동작방식도 전혀 이해하지 못했었다.

그저 이전까지의 경험으로 단순히 html, css를 다룰 줄 안다는 것과 소프트웨어학부 2학년 1학기까지의 전공적인 지식이 다였으며

프론트 쪽의 프레임워크, 백엔드 쪽의 프레임워크 역시 완벽하게 다룰 수 있는 수준이 아니었다.

 

그럼에도 서비스를 개발하고 운영해보고 싶다는 생각에,

다른 사람들이 평가하기에 완벽하지 않더라도, 프론트 & 백엔드 기술이 완벽하지 않더라도 괜찮으니

내가 하지 못할 만한 기술들을 모두 배제하고, 파일 처리와 관리에 친화적인 python을 기반으로 한 Django와 html, css, js만을 활용하여

개발을 진행해 보자고, 최대한 돌아갈 수 있을만한 매커니즘을 구현하여 서비스 운영이라도 해보자고 마음먹고 개발을 진행했다.

 

내가 개발하고 싶은 서비스를 노션에다 한 줄로 적어놓고, 어떤 기능을 개발할 건지 한쪽에다가 적어도 보고, 제약사항과 위험한 점, 한계점도 적어보고, 언제까지 무슨 기능을 완성해 볼 건지 일정도 작성하며 웹 기획서를 완성했다. 또, 디자인도 잘 다루진 못하지만 피그마를 활용해 완성하였으며 전공인 db설계 및 구현 1, 2에서 배운 지식을 토대로 erd를 설계해 db에 반영하였다.

화면은 html, css를 조금씩 조금씩 수정해 나가면서 하나하나 화면을 만들었으며, 처음에는 전혀 몰랐던 Django의 작동방식과 매커니즘을 구글링으로 & 강의로 학습하며 내가 만들고 싶었던 기능들을 하나하나 완성해 나갔다.

 

최종적으로 2주 동안의 설계 3주 동안의 개발과정을 마치고 수많은 블로그와 강의를 참고해서

AWS-EC2를 활용해 서비스를 배포하고 위와 동영상에서 보이는 것과 같이 preprint-cloud 서비스를 완성하였다.

 

 

배운 점

preprint-cloud 서비스를 개발하면서 얻은 가치는 정말로 컸다.

웹의 작동방식도 잘 모르고, 프레임워크에 대한 개념 정립도 되어있지 않았으며, 클라우드 서버에 대한 이해도 없었으나,

이 프로젝트를 통해서 웹 사이트가 어떻게 작동하는 것인지 알게 되었고, 프레임워크를 사용하는 이유가 무엇인지, 내가 왜

aws라는 클라우드 서비스 플랫폼을 통해 ec2라는 가장 컴퓨터를 대여받고 왜 이 서비스를 여기에 배포하여 운영했는지, 파일들을 어떻게

클라이언트로부터 전송받고 서버에 저장할 수 있는 것인지 그 관계와 웹 상에서의 데이터 전송 & 개념에 대해 명확히 알 수 있었으며 큰 틀이 정립되었다.

 

https://choiet.tistory.com/53

 

preprint-cloud-service 배포한 ec2에 운영 자동화 스크립트 파일 설정

여는 글이미 종료된 프로젝트이나 preprint-cloud-service의 운영을 더 쉽게 진행하기 위해서 해당 프로젝트를 배포한 ec2에 자동화 스크립트 설정을 진행했다.crontab이라는 기능을 활용했는데, 생각보

choiet.tistory.com

또한, 아래와 같이 10개월 동안 운영을 하며 주변 사용자들로부터 요청된 여러 수정사항들과 오류들을 해결하고 더 나은 서비스 이용을 할 수 있도록 ui개편을 3개월에 걸쳐 업데이트하고, 또한 서비스 운영의 효율을 위해 파일 정리 자동화 스크립트를 작성해 crontab을 활용하여 주기적 자동 유지보수가 진행될 수 있게 하는 등의 활동을 통해,

소프트웨어의 서비스 운영에 대해 잘 알 수 있었으며, 유지보수란 무엇인지, 사용자의 피드백 반영은 무엇인지 명확히 알 수 있었다.

프로젝트가 다 개발이 완료되었다고 해서 그 시점으로 끝난 것이 아니라, 운영에 있어서, 유지보수에 있어서도 정말 신경 쓸 것들이 많다는 것을,, 유지보수를 고려하지 않고 개발한 프로젝트는 결국 다시 손을 봐야 한다는 것을 깨닫게 되었다.

 

다른 사람들이 보았을 때 이 프로젝트가 대단한 대규모 프로젝트는 아니지만

이 프로젝트를 통해서 나는 소프트웨어 개발과 운영에 대한 큰 틀을 정립하게 되었으며, 이후 2학년 2학기, 3학년 1학기 전공 및 추가로 진행했던 수많은 프로젝트와 preprint의 본 프로젝트인 예약서비스, 명지대학교 입학관리팀의 수주를 받고 진행한 입시 챗봇 프로젝트인 maru_egg프로젝트를 진행하는 데 있어 다방면에서 이 경험이 큰 도움이 되었으며 기반이 되었다.

 

마치는 글

모든 것을 다 알고, 최신 기술을 적용하고, 처음부터 완벽하게 개발하는 것이 정답이 아님을 알게 되었다.

그건 프로젝트가 끝난 후에도 충분히 적용할 수 있으며 이를 처음부터 완벽하게 하고 나아가려고 하면 실패할 확률이 높을 것이다.

html, css밖에 몰라도, 프레임워크에 대한 개념 정립이 되어있지 않아도 도전하는 것에 가치를 두고 시도하는 것이 중요한 것 같다.

 

"혼자선 개발이 어렵다, 프론트 백엔드 모두 지식을 알아야 하는데 어떻게 진행하냐, 서비스가 만만한 것이 아니다."

라는 주변의 말은 내버려 두고 일단 목표를 잡고 내가 할 수 있는 기술을 정리해 보고 또 어려워 보인다고 포기하는 것이 아니라 공식문서를 밤새도록 찾아보거나 구글링 하면서 감을 잡아보고 또 주변에 도움을 요청하면서 꾸준히, 천천히 진행하다 보면 결국엔 성공에 가까워질 것이고, 그렇지 않다 하더라고 크게 배울 것이라고 생각한다.

 

해보지 않았으면 모르는 일이다. "일단 도전해 보자 & 중간에 포기하지 말자"라는 마인드가 중요하다!