본문 바로가기
Web/프로젝트

크립토하우스 - 2편. 개발

by 조엘 2022. 5. 16.

안녕하세요! 조엘입니다. 🙌🙌

크립토하우스(CryptoHows) 라는 프로덕트를 만들고 있어요. 

 

저희 팀은 PM 1명, 프론트엔드 1명, 백엔드 1명으로 구성되어 있는데요. 

모든 구성원들이 서로 협력하며 프로덕트를 함께 만들어 가고 있어요. 

 

지난 1편, 시작한 이유/느낀 점에 이어서 2편에서는 무엇을, 어떻게, 왜 개발했는지를 얘기해볼게요 :) 

크립토하우스의 서비스와 백엔드 코드는 아래 링크에서 만나보실 수 있어요!

 

🎉 서비스 URL : https://cryptohows.xyz/

✨ GitHub(Backend) : https://github.com/CryptoHows/cryptohows-web-backend

 

 

1. 프로토타입

크립토하우스는 "사람들은 VC가 투자한 크립토 프로덕트를 한눈에 보고 싶어한다" 라는 가설을 검증하고자 했어요. 

저와 PM 형 둘이서 먼저 크립토하우스를 만들게 되었는데요. 이때는 제가 팀의 모든 개발을 도맡아서 했어요. 

 

웹 디자인까지는 하기 힘들다고 판단해 creative-tim에서 프론트 템플릿을 찾아봤어요. (https://www.creative-tim.com/)

Vue.js로 프론트엔드를, SpringBoot로 백엔드를 약 2주의 기간 동안 빠르게 개발했어요. 

그 결과, 다음과 같이 크립토하우스의 프로토타입이 나왔어요.

 

크립토하우스 버전 0

해당 프로토타입은 어디에 내놓기 아직 민망한 수준이긴 했어요.

프로젝트 별 디테일 페이지도 없는 제대로 동작하지 않는 프로토타입에 불과했죠. 

하지만 프로토타입은 팀의 비전에 설득력을 더 해주는 효과를 줍니다. 

다른 사람들을 만나며 우리의 목표를 얘기하고, 만들어 둔 프로토타입을 보여준다면 말에 힘이 생겨요. 

 

그 덕이었을까요?

저희 팀에 훌륭한 역량을 가진 프론트엔드 개발자가 합류하였고, 이는 팀에 큰 활력을 불어넣어줬어요. 

 

 

2. 백엔드 개발

덕분에 제 본업인 백엔드 개발로 돌아왔어요. 

크립토하우스의 백엔드를 구축하면서, 우아한테크코스에서 배운 내용을 총 복습한다는 마음가짐으로 임했어요. 

 

일단 도메인 설계를 진행했어요. 

파란색으로 표시한 VentureCapital, Round, Project, Coin핵심 도메인으로써의 역할을,  

노란색으로 표시한 Partnership, RoundParicipation은 다대다 관계를 풀어주는 연결다리로써의 역할을 수행해요. 

각 도메인 별로 어떤 필드가 있는지는 README에 더 자세히 적어뒀어요. 

TDD를 통해 도메인에 필요한 로직을 구현하였고, 빌더 패턴을 통해 필드 주입에 혼동이 발생하지 않도록 구현했어요. 

크립토하우스 도메인 설계

 

테스트를 작성했어요. 

TDD를 통해 도메인을 개발한 이후, 자명하다고 판단되는 로직에 대해서는 테스트를 작성하지 않았어요. 

가령 DB에서 값을 조회해 DTO로 포장하는 등의 로직에 대해서는 테스트를 작성하지 않았어요. 

다만 검증이 필요한 로직에 대해선 인수 테스트/슬라이스 테스트를 고루 섞어가며 테스트를 작성했어요. 

 

현재 크립토하우스 백엔드의 테스트 라인 커버리지는 약 73%에요. 

높은 커버리지 비율은 아니지만, 목표한 기한에 구현을 마무리하는 것에 더 중점을 뒀어요. 

크립토하우스 테스트 커버리지

 

깃 플로우를 통해 형상 관리를 진행했어요. 

혼자 개발했지만, 깃 플로우를 통해 명확한 기능별 PR 및 커밋을 남기도록 개발했어요.  

비록 혼자 백엔드를 개발했기에 PR을 리뷰해 줄 사람은 없었지만,,,ㅜ

보다 의미있는 커밋으로 레포지토리를 관리할 수 있었어요. 

백엔드 레포지토리 커밋 이력

 

백엔드를 개발하면서 스스로 아쉬웠던 점은, 너무 DB 중심의 개발을 하고 있진 않은가 생각이 들었다는 것이었어요. 

수많은 JPQL 쿼리를 쓰면서 이럴 거면 JDBC로 개발하는 것이랑 큰 차이가 없는 것은 아닌가... 생각도 문득 들더라고요. (물론 아닙니다) 

 

Top VC의 투자 소식을 업데이트하고, 이를 사용자에게 전달하는 것이 중요한 기능인 프로덕트기에, 

데이터에 대한 CRUD 로직들이 많을 수 밖에 없겠구나 생각했어요.  

이 과정에서 전 과연 CRUD 이상의 개발자인가라는 의문이 들기도 했답니다. 

 

만족스러웠던 부분은 3주의 짧은 기간동안 배포까지 완료하는 타임라인을 만족해 빠르게 MVP를 런칭할 수 있었고, 

런칭 직후 바이럴이 발생하여 그다음 스텝으로 나아갈 수 있도록 인적 인프라와 자신감을 확보할 수 있었어요. 

 

 

3. 어드민 개발

크립토하우스의 데이터를 조금 더 시각화하여 관리할 수 있는 도구가 필요했어요. 

새롭게 올라오는 Top VC의 투자 정보도 서비스에 반영을 해야 했고요. 

따라서 어드민 페이지를 구축하기로 했습니다. 

 

어드민 페이지의 디자인은 프로토타입의 템플릿을 그대로 사용하기로 했어요. 

ID/PW가 일치한다면 유효기간이 짧은 JWT 토큰을 발급해줘 어드민 권한을 부여해요. 

 

어드민 페이지에서는 다음과 같은 기능을 제공해요. 

 

리스트 뷰 보기

삭제, 수정

개별 등록

엑셀 업로드

초기에는 데이터를 엑셀로 관리했기 때문에, 레거시(?)를 지원할 수 있도록 엑셀 업로드 기능을 추가했어요. 

 

 

4. 크롤링 봇 개발

새로운 투자 뉴스가 쏟아져 나오는 크립토 생태계이다보니, 정보를 Follow Up 해야 했어요. 

따라서 다음과 같이 투자 정보를 받아 볼 수 있게 슬랙 웹훅을 통한 크롤링 봇을 만들었어요. 

다음과 같은 채널을 Follow Up 했어요. 

- https://bloomingbit.io/

- https://cointelegraph.com/

- https://www.coindesk.com/

 

 

5. 클래스 개발

이후 크립토하우스 팀은 82 스타트업 대회에 참여했는데요. (대회에 대한 내용은 3편에서...!)

저희 팀은 82 스타트업 기간 동안 여러 가지 가설들을 검증해나가면서 대회 기간을 보냈어요.  

 

이 중 저희가 검증하고자 했던 가설 중 하나가 아래와 같았어요. 

가설 4. 사람들은 크립토 프로덕트에 온보딩 할 수 있는 클래스를 필요로 할 것이다!

 

작고 아담한 크립토 클래스 플랫폼을 하루의 기간을 잡고 만들어봤어요.  

지금은 아주 박살이 나버린... 앵커프로토콜에 대한 무료 강의와 기타 툴들을 활용하여 강의 커리큘럼을 구성했어요. 

여기에 Amplitude를 붙여 사용자의 행동 양상을 파악할 수 있도록 했고요. 

 

빠르게 만들어 본 클래스 플랫폼

클래스 개발은 재밌었지만, 아쉽게도 유의미한 반응이 나오진 않았어요. 

개별적인 프로덕트를 안다는 것 자체가 이미 크립토 생태계에 온보딩이 되어있다는 것이라는 생각이 들었고, 

차라리 개괄적인 Web3 입문, DeFi 입문등의 강좌가 팔리는 이유라는 결론을 내리게 되었어요. 

 

하지만, 빠르게 프로덕트를 시장에 런칭하고 빠르게 시장의 반응을 검증해보는 경험은 언제나 소중해요. 

 

 

정말 정신없이 기획하고 개발했던 지난 3개월이였어요. 

저희 크립토하우스 팀은 앞서 얘기한 82 스타트업 대회에 참여했는데요!

해당 대회를 거치면서 배우고 느낀 점을 3편에서 공유할게요. 

 

읽어주셔서 감사합니다! 🙌🙌

 

 

반응형

댓글