Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

마로의 개발일지

프로덕트 빌딩 - 2 본문

프로토콜 캠프

프로덕트 빌딩 - 2

maro0201 2023. 11. 12. 17:18

이제 9주 차가 지났고 이제 단 3주밖에 남지 않았다. 개발하면서 계획이 자주 수정되었고, 그에 따른 개발 범위와 내용도 함께 수정되어 프로덕트가 처음 계획과는 꽤나 다른 형태를 띠게 되었다. 이전과 비교해서 변경된 점과 지금까지의 개발 현황, 남은 기간에 대한 계획을 기록할 예정이다.

 

쿠키의 토큰화

 인앱 재화인 쿠키를 토큰화 하기로 했다. 이전엔 쿠키를 토큰화 시키면 의도치 않은 DEX 상장이 일어나 가치의 변동이 있을 수도 있기 때문에 망설였었다. 생각해 보니 중앙에서 관리하는 토큰의 형태로 발급하면 해당 문제는 고려하지 않아도 되기 때문에 중앙화된 토큰 형태로 발급하기로 했고 덕분에 좀 더 Web3스러운 프로덕트가 되었다. 컨트렉트 단에서 쿠키의 구매와 NFT 민팅을 처리하고, 해당 거래는 블록체인 상의 기록으로 남기 때문에 거래의 투명성을 보장할 수 있게 된다. 덕분에 내 할일은 줄어들고 컨트렉트 개발자님은 더 많은 경험과 개발을 할 수 있게 되어 매우 만족스러운 결정인 것 같다.

 

지갑의 변화

 지갑이 기존의 Ramper에서 0xPass로 변경하기로 했었다. 하지만 0xPass와 우리의 생각이 다르고, 불필요한 비용을 지불하는 것 같아 사용하지 않기로 했다. 그렇다고 Ramper를 사용하기엔 단순 유지, 보수만 할 예정인 솔루션이기 때문에 아쉬움이 있었다. 그래서 결국 일단은 지갑을 자체적으로 생성 및 관리하기로 했다. 어차피 서비스 내부에서만 사용되는 지갑이고 쿠키는 중앙화된 토큰이었기 때문에 해킹의 위험도 없다. 추후에 다른 좋은 솔루션과 협업을 할 수도 있고, 좀 더 고도화할 수도 있기 때문에 이런 선택을 하게 되었다.

 

로그인 구현

 기존에는 프론트에서 Ramper를 통해 로그인하고 Ramper에서 세션 관리까지 해줬지만, Ramper를 사용하지 않게 되면서 서버에서 처리하고 jwt토큰을 발급해 주는 형태로 변경하였다. Oauth와 FireBase의 Authentication을 이용해 Apple과 Google 로그인 api를 개발했다. 로그인 개발은 처음이라 예상보다 조금 더 긴 시간이 걸렸지만, 덕분에 로그인에 대한 지식과 이해가 생겼기에 오히려 좋았던 것 같다.

 

DB의 변화

 DB를 기존에 쓰던 FireStore를 계속 사용하기로 했다. 이유는 기존에 있던 기능을 신규 DB api로 대체함과 동시에 새로운 api를 개발하려니 혼자만으로는 역부족이였기 때문이었다. 다른 팀원들은 새로운 기능을 구현하는데 난 기존의 api를 구현하고 있었기 때문에 정체가 되었고, 기존의 api를 먼저 구현해야 추가 기능을 구현할 수 있었기 때문에 답답해도 어쩔 수 없는 상황이었다. 그래서 지금 당장 모든 api를 개선하기보단, 당장 동작하는 항목들은 미뤄두고 새로 만드는 api들을 FireStore를 이용해 개발하기로 했다. 기존에 설계한 DB를 모두 버리고 거의 다 완성해 가는 정산 api를 다시 개발해야 했지만, 나중을 생각하니 이게 옳다는 결론을 내렸다. 덕분에 로그인 기능도 서버로 옮길 수 있었고, 추가적인 기능들을 개발할 수 있는 여유가 생겼다. 지금 생각해보면 당장은 완성도보단 동작이 우선이기 때문에 꽤나 좋은 판단이었던 것 같다.

 

컨트렉트 연동

 컨트렉트 연동은 이전에 테스트를 통해 호출되는 것을 확인했고 Relayer를 이용한 서명도 동작을 확인했었다. 중앙화된 서비스를 하기로 했기 때문에 AA나 Paymaster 기능은 필요가 없어졌다. 그래서 개발된 컨트렉트를 호출하는 서비스만 개발하고, 예외 처리만 잘한다면 컨트렉트 부분은 더 이상 신경 쓰지 않아도 될 것 같다. 물론 저 서비스를 어떻게 구현할지를 생각하는 게 중요하겠지만.

 

인프라 구성

 인프라는 AWS Lightsail을 이용하려 했지만 인스턴스가 2개밖에 생성되지 않는 문제가 있어 사용하지 않기로 했다. 미리 알았다면 좋았을텐데 하는 아쉬움이 있었지만 덕분에 Lightsail을 사용해보고 적용해 볼 수 있는 좋은 경험이었다. 나중에 토이 프로젝트를 할 때 쓰면 꽤 좋을 것 같았다. 그래서 대신 EC2를 사용해서 인스턴스 3개를 생성한 뒤 각각 Web, Server, (Admin, Landing, Dashboard)를 띄울 생각이다. 이미 web과 server는 생성한 상태이고 추가적으로 (Admin, Landing, Dashboard)용 인스턴스만 띄우면 된다. Web과 Server는 중요하기에 따로 분리해서 띄우고, 상대적으로 덜 중요한 Admin, Landing, Dashboard 들은 하나의 인스턴스에 같이 띄워 비용을 절약할 생각이다. 물론 생각처럼 잘 안될 수도 있지만 시도해 보는 걸로.

Comments