Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2022-12-19 스터디 준비 #6

Closed
1 of 6 tasks
KangyeolLee opened this issue Dec 11, 2022 · 0 comments
Closed
1 of 6 tasks

2022-12-19 스터디 준비 #6

KangyeolLee opened this issue Dec 11, 2022 · 0 comments
Assignees

Comments

@KangyeolLee
Copy link
Contributor

KangyeolLee commented Dec 11, 2022

공유할 내용

  • 좌충우돌 장바구니 UI 개선 작업
  • 좌충우돌 우아한 점심룰렛 배포기
  • 좌충우돌 신규 입사자 온보딩 프로세스
  • 좌충우돌 리액트 18 버전업
  • 좌충우돌 구글 엔지니어는 이렇게 일한다 감상평
  • 함수형 프로그래밍 합성 모델 만들어보기 with JS(TS)

배경

  • 점심 선택을 도와주기 위한 랜덤 선택기를 만들어보자는 취지로 시작
  • AWS 및 다른 클라우드 서비스를 이용한 유료 배포는 돈이 아까우니 무료 배포 서비스를 이용해 진행할 계획

과정

  • 초기엔 프론트만 구축해 정적 페이지로 배포할 생각 (최소한의 리소스 투여)
  • 때문에 초기 스택은 [리액트]+ [에어테이블]+ [깃허브 페이지]로 상정 (가슴이 웅장해지는 구성)
  • 공들여 개발하기 보단 최대한 빠르게 개발 후 기능만 사용할 예정이었기에 후다닥 개발 착수
  • 하지만 스피디하게 개발하다 보니 엄청난 문제가 발생

난관

  • 첫 번째 난관. 빠른 개발 속도의 트레이드 오프로 내외적으로 엄청난 발퀄의 결과물 탄생
  • 문제는 깃허브 페이지로 정적 사이트를 올리 시 깃허브 계정이 만천하에 공개됨
  • 두 번째 난관. 에어테이블을 통해 서버리스한 API를 바로 제공하려 했으나, 개인 계정의 앱 키가 만천아에 공개됨

해결책 도입

  • 첫 번째 문제점은 다른 정적 배포툴을 이용하기로 결정 → [Netlify]
    • zero config에 가까운 설정 + 호스트네임을 고정 도메인 외에 자유롭게 변경 가능 → 시간 투자가 적음 + 내가 만든 프로젝트임을 일차적으로 감출 수 있음
  • 두 번째 문제점은 에어테이블의 API 응답을 프록싱해 줄 아주 간단한 프록시 서버를 두기로 함
    • 프록시 역할만 하는 매우 간단한 서버이기 때문에 Node + Express 로 구성
    • 사실 이 기능은 노드만 써서도 가능한데 환경 구성 시 습관적으로 Express를 인스톨해버려서 이렇게 쓰게 됨

그러나…

  • 노드 프록시 서버를 두면서 서버 자원을 배포하기 위한 무료 서비스가 필요해짐
  • 당연히 우리의 영원한 친구 [헤로쿠]를 떠올렸으나 무료 플랜이 11월 28일 이후로 지원 중단
    • 영원한 친구가 아님 이제
    • 사실 개발을 11월에 끝내놓고 배포를 미루고 있던 내 문제가 제일 큼
  • 헤로쿠를 벗어나 서버를 배포하기 위한 여정을 떠나야 했음

후보군

  1. [GearHost]

    • 무료인줄 알았으나 가격 정책에 무료 버전 안내가 없어서 안 알아봄
  2. [Back4App]

    • 자체 SDK를 설치해서 연동하는 과정이 필요하고
    • 프론트 + 백엔드 한 번에 서빙하는 방식만 문서에 설명되어 있어
    • 지금 구조와 다른 구조를 또 가져가기엔 싫어서 제외
  3. [오라클 클라우드]

    • 곰젤리의 소개로 알게된 무료버전 지원 클라우드 서비스
    • 매혹적이었지만 직접 인스턴스를 띄우고 기타 필요한 설정까지 손수 해야하기에 일단 제외
  4. [Deta Deploy]

    • CLI로 매우 간단하게 배포가 가능해보여 채택 ([참고]

      44 PNG

      2 PNG

    • 실제로 배포까지 일단 진행했지만 또 다른 문제가 발생 ([배포])

    • Deta Deploy는 자체 플랫폼 서비스로 3개의 서비스를 빌트인으로 제공

      • Micros | Bases | Drives
      • 각각 인스턴스, 데이터베이스, 파일 스토리지라고 보면 됨
    • 직접 만든 노드 서버를 인스턴스로 띄울 수 있지만, 모든 기능을 사용할 수가 없음

      • 타입스크립트 미지원. 그런데 이미 해당 서버 어플리케이션은 타입스크립트로 작성했기에 다시 자바스크립트로 마이그레이션이 필요
      • 프록싱을 위해 node-fetch 패키지를 설치 했으나 서버 TO 서버간 호출을 내부적으로 허용하지 않는 것으로 보임 → 인터널 서버 에러 (500)
    • 즉 배포하고자 할 서버를 Deta 플랫폼 기반으로 구성해야 함

    • 데이터베이스와 파일은 사용하지도 않고 프록시 역할의 서버이기에, 서버 to 서버간 통신이 메인이라서 결국 다른 서비스를 찾아보게 됨

      1 PNG

  5. [CLOUDTYPE]

    • 기존 헤로쿠와 가장 유사한 서비스로 보임
    • 헤로쿠와 달리 sleep 프로세스도 없음
    • 서버뿐 아니라 프론트 및 다양한 애플리케이션 배포가 가능
    • 한국에서 만든 서비스임

결론

  • 개발자의 시간은 소중하다
  • 사실 넥스트 썼으면 이런 삽질은 필요없었다
  • 맛집은 랜덤 선택기 이런거 직접 구현 말고 주변 맛잘알 팀원과 붙어다니자
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant