Etc/Experience

Pace 회고

Seung-o 2022. 5. 14. 23:30

1. 개요

이전 회사를 다니며 진행했던 SaaS 프로젝트에 대해 회고해보고자 한다. 

 

1) Saas 프로젝트란?

 

더보기

SaaS(Software as a Service)는 클라우드 기반의 소프트웨어 제공 모델로, 클라우드 제공업체가 클라우드 애플리케이션 소프트웨어를 개발 및 유지 관리하고, 자동 소프트웨어 업데이트를 제공하고, 인터넷을 통해 Pay-as-you-Go 방식으로 고객에게 소프트웨어를 제공합니다.

출처: https://www.oracle.com/kr/applications/what-is-saas/

 

쉽게 생각하면, 로컬한 소프트웨어를 클라우드 형식으로 제공하는데에 그 의의가 있다. 

 

2) 왜 SaaS를 사용할까?

 

내가 생각하는 SaaS의 가장 큰 장점은 '접근성'에 있는 것 같다. 

 

우선 로컬한 소프트웨어는 개인 기기에 귀속된다. 그에 따라 소프트웨어 내 본인이 입력한 데이터에 대해 원활한 공유가 어렵다. 마치 하드웨어 저장한 Word 문서는 다른 기기에서 접근이 어렵지만, Google Docs로 작성한 문서는 네트워크 연결만 이루어지면 어디서든 접근할 수 있는 것과 유사하다. 

 

또한, 프로그램 자체의 접근성도 있다. 가령, A 라는 소프트웨어 구매에 1000만원이 소모된다고 하자. 기업이 본인 제품에 A 소프트웨어를 직접 적용해본적도 없는데 단번에 이를 구매하는 건 리스크가 큰 행위이다. SaaS는 사용량에 따라 가격을 책정하면서 이러한 리스크를 줄일 수 있다. 마치 개인 서버를 직접 사는 것이 아닌 AWS 등을 활용하여 서버를 구동하는 것이 갖는 장점과 유사하다.

 

2. 프로젝트 진행 

 

1) 기술 스택

TypeScript와 Node.js를 기반으로 개발을 진행하였다.

 

2) 프로젝트의 목적

openModelica 라는 오픈소스 프로젝트를 SaaS 형태로 구현하는 것이 목적이다.

더보기

OpenModelica는 복잡한 동적 시스템의 모델링, 시뮬레이션, 최적화 및 분석을위한 Modelica 모델링 언어를 기반으로하는 무료 오픈 소스 환경이다.

출처: https://en.wikipedia.org/wiki/OpenModelica

 

3) 진행 과정

- 우선 WebGME를 사용하여 이를 구현해보고자 하였다. 오픈 소스로 제공되고 있는 프로젝트였기에, 이것을 적절히 활용하면 modelica 프로그램도 구동가능할 것이라고 생각하였다. 

더보기

WebGME는 웹 기반 모델링 프로젝트로, 오픈소스로 제공되고 있다.

출처: https://github.com/webgme/webgme

 

예상대로 modelica 가 제공하는 디버깅 프로그램 활용하여 모델링에 성공하였지만, 모델 내에서 오브젝트의 포트( port ) 조정에 어려움을 겪었다. 이 문제를 해결하려면 WebGME에서 제공하는 소스코드의 수정이 필요했고, 소스 코드의 분석부터 하려면 생각보다 업무 규모가 커질 것 같았다. 

 

- 결국 과감하게 진행 중이던 WebGME를 버리고 처음부터 다시 설계를 진행하였다. 자세한 설계 내용은 업무 상 기밀이기에 노출할 수 없지만, 결과적으로 근사한 SaaS 프로젝트의 기반을 만들 수 있었다.

 

결과물: https://www.youtube.com/watch?v=JUvH9GLUHI8 

 

 

 

3. 배운 점

1) 때로는 미련을 갖지 않는 것이 중요하다.

 

사실 WebGME의 활용은 1달 이상 진행했었는데, 결과적으로 이를 과감하게 버리고 새롭게 설계와 개발을 한 것이 득이 되었다고 생각한다. 프로젝트의 방향을 바꾸는 것은 쉽지 않다. 그동안 내가 쏟은 노력과 시간이 있기 때문이다. 하지만 갈림길에 있어서 우리가 함께 해와서 익숙한 길만을 택하면 그것이 마음의 안정은 줄 수 있어도 프로젝트의 성공을 보장하지는 않는다는 것을 느꼈다.

 

2) FE와의 소통은 중요하다.

 

개발 회사를 처음 경험하는 나로서는 이런 소통의 중요성을 느끼는 계기가 된 것 같다. 가령, 인터페이스에 대한 논의라던가 프로젝트 전반의 설계에 대한 논의를 함께 하면서 조금 더 개선된 형태를 구축해나갈 수 있었다. 물론 아쉬운 점도 있었다. 이런 논의들에 대해 문서로 명확하게 정리를 미리 하지 않은 것이다. 지금 보면 NestJS의 swagger 같은 openAPI를 활용하는 것이 훨씬 효율적이라는 걸 알지만, 당시에는 ( 약간은 무식하게 ) 화이트보이드에 하나씩 그리고 적으며 설계를 했다.

 

3) 구성원은 중요하다.

 

회사 팀장님은 자유로운 분위기 형성을 위해 업무 중간중간 담소 시간 등을 마련하는 등의 노력을 기울이셨다. CTO님은 TypeScript 나 Functional Programming과 같은 개발 지식부터 Jira를 이용한 애자일 업무 방식까지, 많은 것을 가르쳐 주셨다. 이 자리를 빌려 감사하다는 말을 꼭 전하고 싶다.

 

4. 번외

현재 이 프로젝트의 베타 테스트가 진행 중이다. 참여해보실 분은 참여해보아도 좋을 것 같다! ( 상금도 있다 )

 

https://team-1623238896121.atlassian.net/wiki/spaces/PACEONCLOU/overview