P & D
Research and Development가 아니라 Philosophy and Development의 P & D 입니다. 개발글에 있어서 새로운 시도를 하고 있습니다. 그저 개발기를 적어 내려가는 것이 아니라, 어떤 철학을 가지고 개발을 해나가고 있는지, 어떤 시도를 했는지, 개발은 어떻게 하는지를 적어 내려갑니다. 이번 시리즈는 도움을 주고 받는 방법 - 이타인클럽의 철학과 개발 과정을 다룰 것입니다.
이전글 - [이타인클럽 철학과 앱개발] #2 서비스 홈페이지 만들기
철학 - 사람이 중요하다!
도움을 주고 받는데 가장 핵심은 도움을 주고자 하는 사람들입니다. 도움을 주고자 하는 사람이 없다면 이 서비스는 돌아가지 않기 때문입니다.
그렇다면 도움을 주고자 하는 사람들을 어떻게 모집하고, 관리해야 하는지 고민이 됩니다. 회원 가입없이 서비스를 사용하게 할 것인지, 아니면 직접 서버를 만들어서 회원을 관리할 것인가 결정해야 합니다. 회원 가입 없이 서비스를 운영한다는 것은 서비스를 사용하는 측면에서는 좋지만, 도움 주고자 하는 사람들의 커뮤니티를 만드는데는 좋지 않다고 생각되었습니다.
회원들의 결속력도 다지고, 정말 하나의 도움 커뮤니티를 만들기 위해서는 직접 회원 관리가 필요하다고 결정했습니다. 그렇다면 그 다음은 회원 관리를 위한 서버를 구축하는 것입니다.
개발 - 서버의 필요성
이 당시가 2015년 말입니다. 저는 이때만 하더라도 서버 개발 경험은 전무했고, 아마존의 웹서비스 AWS가 있다는 것을 어렴풋이 알고만 있었습니다. 회원 관리를 위해서는 데이터베이스가 필요하고, AWS에서는 RDS라는 서비스를 제공하고 있었습니다.
그 때 참고했던 생활코딩 자료가 있습니다.
https://opentutorials.org/module/328/3120
그리고 블로그 자료로 참고를 했습니다.
http://hyeonstorage.tistory.com/275
지금은 AWS가 바뀐 부분이 많아서 위 참고 자료와는 다른 점이 있을 것입니다.
RDS가 적절한 데이터베이스인지도 감이 없었습니다. 그 때 무료 데이터베이스인 MongoDB라는 것이 있었습니다. 찾아보니 RDS를 쓰지 않고, AWS에 EC2 인스턴스에 MongoDB를 직접 설치하여 사용하는 방법도 가능했습니다. 알고보니 RDS를 설정은 해놓고 사용하지 않았는데, 비용이 월 $10이상 청구가 되었습니다. 별로 쓴 것도 없는데 $10나 나가는 걸 보고 얼른 RDS 서비스는 해지했죠.
이 때 제가 구현했던 것은 요약하면 이렇습니다.
- AWS에 EC2 인스턴스 생성 (1년 무료)
- Godday 도메인 구입 후 EC2와 연결
- 참고 https://www.quora.com/If-I-bought-a-domain-name-from-GoDaddy-but-plan-to-use-amazon-EC2-to-run-the-site-do-I-need-hosting-from-GoDaddy
- Node.js 설치 및 설정
- MongoDB 설치 및 설정
- 회원 가입폼
- username
- password (sha1 hash key)
- bitcoinaddr
- solvedcases
이 때(2015년), 이미 비트코인에 대해 알고서, 비트코인 주소도 회원 가입폼에 추가를 했었습니다. 도움 주는 사람들이 비트코인으로 기부받을 수 있게 비트코인 주소를 입력하도록 했었죠. 서버 프로그램으로 Node.js를 사용했는데, 그 당시 App.js 파일을 보니 다음과 같이 암호화폐 관련 패키지도 보입니다.
var crypto = require('crypto');
회원가입폼에서 동일한 username이 있는지 체크하는 것부터, 이메일 인증 구현도 꾸역 꾸역 찾아서 구현을 했었습니다.
찾아보니 이메일 인증 메일이 남아 있네요.
이걸 구현하기 위해 참고했던 자료입니다.
- https://codeforgeek.com/2014/07/node-email-verification-script/
- https://www.npmjs.com/package/nodemailer
이 때, gmail 계정으로 인증 메일을 보내는데 이메일이 안보내졌습니다.
- 문제 상황: http://stackoverflow.com/questions/26196467/sending-email-via-node-js-using-nodemailer-is-not-working
- 해결 방법. 다음 페이지로 가서 less secure apps 설정을 turn-on
https://www.google.com/settings/security/lesssecureapps
추가로 gmail에서 메일 보내는 것 블락한 것은 ec2에서 gmail 접속한 이력이 없기 때문이었습니다. ssh로 서버 접속후 gmail 로그인 하면 되었습니다.
- 참고. https://linuxmeerkat.wordpress.com/2013/10/10/emailing-from-a-gmail-acount-via-telnet/
- http://stackoverflow.com/questions/20337040/gmail-smtp-debug-error-please-log-in-via-your-web-browser
여기까지 하고 나니 비로소 이메일 인증 메일이 발송되고, 회원 가입도 완료가 되었습니다!
이미 오래전 방법들이라 상세한 방법은 쓰지 않았습니다. 위에 링크를 참고하면 문제점과 그에 대한 해답에 대한 힌트를 얻을 수 있을 것입니다.
다음은 누군가 질문을 하면 회원들한테 이메일을 보내는 시스템을 구축하고, 구현한 내용을 살펴보겠습니다.
홍보
실시간 도움 주고 받기 앱 helpus가 구글 플레이에 출시되었습니다. 관심있으신 분들은 설치 및 피드백 주시면 대단히 감사하겠습니다.
- 구글 플레이: https://play.google.com/store/apps/details?id=club.etain.helpus
- 아이폰: 1월 또는 2월 중 출시 예정
- 소개 영상