SWS Console
나는 SteveWebService Console을 만들고 이 기능들로 직접 외주개발을 했을 때 얼마나 생산성을 높이는지 확인해보고 싶었다.
그래서 유명한 외주 개발 프로젝트를 수주 받는 플랫폼에 가입해 간단한 어드민 제작을 요청받는 상품을 만들었다.
우리는 최대한 적은 시간을 들이면서 빠르게 개발할 수 있는 프로젝트를 받기 원했다.
그래서 계정 생성, 로그인, 권한관리, 엑셀 다운로드, CRUD 등 최소한의 기능을 요구하는 프로젝트를 받아서 진행하기로 결정했다.
그렇게 첫번째 프로젝트를 받았고 간단한 상품 및 직원 실적 관리 ERP 프로젝트 였는데 내용은 아래와 같다.
계정의 타입은 마스터 관리자, 중간 관리자, 일반 계정이 있고 일반 계정이 상품의 갯수를 등록하고 Status가 진행중 완료되면 종료 등을 입력하는 것이다.(자세한 내용을 내보내면 안되기 때문에 상품이라고 하겠다.)
그리고 이 상품이 등록될 때마다 로깅한 것을 마스터, 중간관리자가 보는화면이 있고 전일과 당일 실적 통계를 확인하는 화면 등이 있었다.
우리는 개발을 위해 스펙을 정했고 고객이 제일 비용이 적게드는 방법으로 선택하기로 했고 아래와 같이 정했다.
1. 프론트 개발은 React.js로 진행하며 비즈니스 로직 역시 React.js 어플리케이션에서 컨트롤한다.
2. AWS Cloud에서 AWS Lambda CRUD API & mysql RDS 인스턴스를 생성해서 서버를 구축하지 않고 RDS 비용만 지불한다.
3. React 프로젝트는 S3 정적 웹호스팅 + Cloudfront로 배포하여 인스턴스 유지비를 들이지 않는다.
위와 같이 정한 이후 먼저 고객한테 AWS Cloud의 가입 및 카드 등록 방법에 대한 문서를 제공하고 가입 이후 계정 아이디 비밀번호를 요청하고 해당 계정으로 로그인해서 SteveWebService Console을 사용하기 위해 IAM User를 생성하고 권한 세팅을 진행했다.
그 다음에 SteveWebService Console로 먼저 VPC 세팅을 진행해야했는데 방법은 너무나 간단했다.
SteveWebService Console에서 Sws Project(VPC & API GW Turn Key)를 생성하기만 하면 10분만에 VPC, subnet, security group, Api Gateway까지 모든것을 다 셋업해주기 때문이다.
이제 그 다음은 RDS DB 인스턴스를 세팅해야했는데, 이 역시도 만드는 것이 얼마 걸리지 않았다.
SteveWebService Console에서 DB & Bastion EC2 Turn Key를 이용해서 생성하기만 하면 10분만에 Private RDS & Bastion EC2까지 구성되기 때문이다.
너무나 쉽지 않은가?
SWS AWS DB & Bastion EC2 Turn Key 기능 보러가기
그 다음에 SWS Console에서 생성한 RDS Detail 화면에 진입해서 Pem Key를 다운로드 받고 Access Guide에 나온 커멘드를 터미널에 복사 붙여넣기하면서 Bastion EC2에 접속해서 RDS DB에 접근한 다음, 설계한 DB 테이블 구조 대로 테이블을 생성했다.
위 과정이 끝난 뒤에 마지막 단계인 CRUD API를 테이블 마다 만들어주는일을 진행했다.
이 역시도 굉장히 간단하게 끝났는데, AWS Lambda CRUD API Turn Key 기능으로 아래와 같이 테이블 별로 생성해주기만 하면된다.
너무나 쉽지 않은가? 원래 API 서버를 만들어서 CRUD를 만들어서 인스턴스에 올려서 배포해야하는 과정을 10분 내로 단축시킬 수 있었다.
SWS AWS Lambda CRUD Turn Key 기능 보러가기
이렇게 생성한 CRUD API의 endpoint와 request path를 SWS Project Detail로 이동해서 확인해서 아래와 같이 React 코드에 function을 세팅하여 바로 사용하도록했다.
이렇게 셋업한 다음에 우리는 이제 고객이 요구한 요구사항 대로 React app에 비즈니스 로직을 작성해나갔다.
어드민 웹을 만들던 도중 고객의 추가 요구사항이 생겼는데 고객의 데이터를 통계 데이터를 추출해서 화면에 보여줘야하는 요구사항이었다.
우리는 이 문제를 DB 쿼리로 추출할 수 있도록 Lambda CRUD Turn Key로 생성한 API에 제공하고 있어 간단하게 끝낼 수 있었다.
아래와 같이 쿼리에 추가할 로직만 만들면 끝인 것이다.
이렇게 우리는 어플리케이션을 작성하였고 이제 배포 단계만 남게되었다.
이때 우리는 React 앱을 S3 정적 웹 호스팅과 Cloudfront를 이용해서 배포하기로 했는데, 이를 구축하려면 저 두 서비스의 설정을 따로 진행하고 빌드 파일을 업로드해야하지만 나는 SteveWebService Console 기능인 AWS Frontend DMS 기능으로 단 시간만에 배포하였다.
배포 방식은 굉장히 간단했다. bundle.js와 index.html이 포함된 폴더를 zip파일로 압축해서 Frontend DMS에서 업로드해서 Create만하면 배포는 끝난 것이다.
그리고 위와 같이 Cloudfront Domain을 사용자에게 제공하거나 커스텀한 도메인이 필요한 경우는 Route53에서 도메인을 구매해서 SSL Certificate를 생성하고 도메인을 연결하면 끝나는 것이다.
우리는 이렇게 성공적으로 첫 외주 개발 프로젝트를 성공시켜 제공하였고 아주 뜻깊은 경험을 할 수 있었다.
그리고 우리는 VPC의 구성부터 RDS 구축, API 구축, 배포 리소스 구축까지 많은 학습과 세팅 시간이 걸리는 활동을 AWS Cloud의 학습 없이도 40~50분 내로 구축할 수 있도록 SteveWebService가 도와준다는 사실을 알 수 있었다.
우리는 계속 사용자가 AWS Cloud에 대한 학습 없이도 클라우드 아키텍처를 구축할 수 있게 도와주는 툴을 만들어 개발자가 비즈니스에 조금 더 집중할 수 있도록 도와주고 나아가 적은 인원의 개발자로도 최대한의 AWS 리소스들을 사용할 수 있도록 가치를 제공할 것이다.
다음 기사는 다른 문제 해결에 대한 히스토리를 쓰려고 한다. 끝