Skip to content

Instantly share code, notes, and snippets.

@Leo7654
Last active January 14, 2024 02:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Leo7654/a4215c366ae208995f7f856bf1089b5f to your computer and use it in GitHub Desktop.
Save Leo7654/a4215c366ae208995f7f856bf1089b5f to your computer and use it in GitHub Desktop.
초기 스타트업 개발자를 위한 글

초기 스타트업 개발자를 위한 글

  • 홈클을 접으면서 홈클의 개발은 어떻게 이루어 졌는지 남겨 놓고자 한다.
  • 우선 생각나는 대로 일기 형식으로 적겠다.

| 질문이나 다르게 틀린다고 생각하는것이 있으면 알려주시길 바랍니다.


📚 스택

우선 내가 홈클에 합류했을 때, 서버는 cafe24, PHP, MySQL을 사용하고 있었다.

서버쪽을 맡게 되어서 스택을 다시 구축하려고 이것저것 알아 보았다.

예전에 외주로 KTCloud, Node.js, MongoDB를 사용해 본적이 있었다.

장단점을 나열해 보자면,

KTCloud:

  • Pros. 한글이라 편하다! 지원요청도 한글!
  • Cons. (내가 알기론) RDS지원안한다. 하드디스크 마운트부터 손수(!) 해야한다. 구글링이 안된다.

Node.js:

  • Pros. 편하다. 빠르다. Javascript, Json을 사용하기 때문에 엄청 편하다!
  • Cons. 한 request가 죽으면 서버가 죽어버린다! 확실히 불안정하다.

MongoDB:

  • Pros. 편하다. 빠르다. Json을 사용하기 때문에 엄청 편하다! 필요할때 마다 column을 추가할 필요가 없기 때문에 구조가 자주바뀌는 스타트업에게는 좋다.
  • Cons. 아직 많이 쓰이지 않았다.(= 제대로된 정보or유틸들이 잘 없다)

많이 쓰는 다른것도 알아보았다.

Google Cloud:

  • Pros. (구글에서 말하길) AWS보다 훨 싸다! 빠르다! 좋다! 웹인터페이스가 잘되있다.
  • Cons. 이거 설정하다 빡칠뻔했다. 15년3월이였는데 이때가 cloud유틸 메이저 버전업하는 과도기였던듯 하다. download용 유틸은 먹통이고, 웹유틸은 구리고.. 지금은 좀 많이 정리되고 자리가 잡힌듯하다.(16년 4월)

AWS:

  • Pros. 미리 설정된 snapshot들이 잘 되있다. 이런 저런 기능들이 많다. RDS유틸이 잘되있다.(자동 백업 이런 기능이 잘 되있다.) 뭔가 있어보인다.. 얼마전에 한국서버가 생겼다. (원랜도쿄사용)
  • Cons. 웹관리 유틸이 약간의 버그들이 있다.(하다 빡친다) 잘못하다간 요금 폭탄을 맞을 수 있다. (instance를 추가했을 때 추가되는 가격에대한 정보가 잘 나와 있지 않다. 예로, eb를 하나 켜면 EC2, LB, RDS가 켜진다. 그리고 어떤 instance가 얼마를 사용했는지 보기가 어렵게 되있다. 일부러 아무생각 없이 손대면 요금 폭탄맞게 하는 구조일지도…)

PHP:

  • Pros. 잘 안죽는다. 옵션에 따라 문법 체크를 강화할 수 있는데 이 부분이 보안을 강화해 주는듯하다.
  • Cons. 언어를 따로 배워야하고, Json으로 통신할때 가끔 문제가 생긴다. (data형)

MySQL:

  • Pros. (…) AWS에서 RDS를 지원한다. 오래된 언어라 정보가 많다.
  • Cons. (개인적이지만) sql언어가 맘에 안든다. javascript-php-sql을 혼자 다 다뤘어야 했는데, 다 날짜형태가 다 다르다! 함수도 다 다르다! MEAN스택으로 개발할때는 아무생각 없이 개발 할수 있었는데, 이건 여러개의 함수를 외우고 있어야 했다. 만약 AWS에서 MongoDB를 지원해 줬으면 MongoDB로 옮겼을 것이다.

결국 AWS, PHP, MySQL을 사용하게 되었는데, 뭐 이런 저런 이유가 있었겠지만, 저렇게 선택한 이유는 다음과 같다.

다시 짜기 귀찮다. 바로 결제 모듈을 넣어야해서 MongoDB를 쓰기엔 좀 무서웠다.


☁️ 기타, 프레임워크

PHP Slim: Restful API 서버 만들기 좋은듯하다.

Letsencrypt: SSL을 무료로 사용할 수 있다. (SSL은 오픈된 기술인데 유료인 이유는 호스팅+보험비 라고 한다. 어짜피 SSL의 알고리즘 문제이면 보험비를 받을 수 없고, 서버가 뚫리면 이게 SSL의 문제라는걸 증명해 내야 보험비를 받을 수 있다고한다. )

Slack Api: 슬랙을 내부 로깅용+알림용 으로 사용했다. 주문이 들어오면 슬랙으로 띠링! PHP버그가 나면 콜스택이 슬랙으로 띠링!

PG사: (KG이니시스, 나이스페이, 카카오페이): 우리나라 ActiveX의 늪은 벗어 날 수가 없다. 나도 내가 우리사이트에서 결제하다 빡침. 구글플레이 결제 시스템에선 영수증만 있으면 언제든 구매에 대한 조회가 가능했는데, 세PG사 모두 로그,DB 다 손수 관리해주어야한다. (이게 MySQL쓰게된 큰 이유. 개발문서도 10년전꺼고 5년동안 리뉴얼안된 문서도 있었다. 문서달라고 하면 최신꺼가 어디있는지 자신들도 잘 모르는듯..)

KG이니시스(가입비22만+1년회비22만): 더럽게 비싸다. 카카오페이: 다른 PG가맹 안되있으면 가입 안시켜준다. 그나마 ActiveX없이 쉽게 결제 가능. 나이스페이: 2,3위 회사라 스타트업 지원을 잘해주는듯. 알림톡: 긴 메세지도 20원이라 싸다. 폰번만 있으면 카톡으로 전송가능. 자바서버를 따로 구축해야된다… 옐로아이디 친추하기 쉽다(재마케팅 용이). 템플릿 등록 요청, 승인이 되야 보낼 수 있어서 빠르게 대처가 힘들다.

cafe24 문자: 예전에 썼던거라 그냥 썼다. 단문20원 장문60원.

github: 다 아는것..

mailgun: 메일 보내는데 썼다. (이름 잘 지은듯 하다.) 추가로 Sendgrid 라는데도있다.

네이버works모바일: 회사 메일. 구글이 너무 비싸서 무료를 찾음.


💻 전체적 개발

개발 홈클의 개발자는 2명+인턴 1명 이였다. git을 사용할 필요가 없다고 느꼈다. 그래서 git은 단순히 버전 관리만을 위해 사용하였다.

  • AWS에 개발 서버+개발 DB를 놓고, 자유롭게 개발&테스트를 하였다.
  • 테스트를 완료하면 git에 넣고, eb에 deploy를 하였다.
  • 앱, 호스팅, api서버 모두 하나의 서버를 사용하였다. (물론 우아하진 않지만, deploy할때 버전 충돌이 일어날 일이 없어서 좋았다.)
  • 접속은 ftp또는 sftp를 이용하였다. (하루에 deploy를 2~20번 정도 한듯하다.)

AWS에 code deploy기능이 있는데 도쿄서버는 지원이 안되서 못 써봤다.

static파일들도 귀찮아서 다 eb에 넣었는데 나중에 프론트페이지 최적화 할때, S3에 넣어 주니 확실히 빨라졌다.

개발 DB와 사용DB의 table구조는 똑같아야했는데 이거 수동으로 하기가 귀찮았다. (db비교하는 쿼리를 만들어놨는데 없어진듯..)

웹앱 보통 처음 개발 할때 크게 PC웹, 모바일 웹, 안드로이드앱, 아이폰 앱 으로 나눌 수 있다.

우리는 모바일 웹으로 구현을 하였는데,

  • 모바일 웹으로 구현해 놓으면 pc웹, 안드로이드앱, 아이폰 앱을 구현 할 필요가 없다. (1석4조)
  • 안드로이드앱, 아이폰앱은 웹뷰로 만든다. (+ 푸시, uri 핸들링필요)
  • 스타트업의 특성 상 앱의 업데이트가 잦은데 빠른 업데이트가 가능하다. (폰갭같은 하이브리드를 안 쓴이유)
  • 혹자는 잦은 업데이트가 가능한 web에서 app으로의 생태계 변화는 스타트업에게는 큰 페널티일 것이라고 말했다. (retention은 높일수 있겠지만, 잦은 실험은 불가능하다.)
  • 스타트업의 특성 상 Q/A부서가 없는게 당연하기 때문에 버그가 일어날 확률이 높다. 잘못 업데이트를 하면… 아이폰의 경우 1주일간 손빨고 지켜봐야한다…
  • PC웹 UX디자인이 쉬워진다.
  • 대신 responsive, css, 브라우져, 기기, cache, 메모리 등등의 이슈로 앱개발 하나 하는것 보다 1.5배의 노력이 드는듯하다.

또, 보통 웹앱을 만들게 되면 PC화면도 생각하게 되는데 웬만하면 PC는 배재하자. UX상 모바일에서 PC로 옮기는것은 쉽지만, PC웹으로 구현한 UX를 모바일로 옮기는것은 UX를 다시 디자인 해야한다.

스타트업에선 드는 리소스를 최소화 최소화 최소화 하자! 기술부채는 마땅한 것이다.

애플 앱스토어에서 웹앱은 승인을 안시켜 준다는 소문이 있던데, 홈클은 한번에 승인을 받았다. (웹에서 기기를 조작하는 기능이 있으면 반려될 확률이 높다.)

@mindOpeners
Copy link

즣은 글이네요 ^^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment