본 글은 Naver Cloud Platform의 주니어 개발자 지원 프로그램 "Green Developers"의 참여 후기 작성을 위해 제작되었습니다.
12월에 프로젝트 끝나자 마자 쓰려고 했었는데 어쩌다 보니 해를 넘겨 2월을 향하고 있네요... 그치만 NCP가 너무 좋기도 했고 나름대로 후기를 남기고 싶어서 이렇게 글을 쓰게 되었습니다.
HAGIMA (Hands-free Audio Guided Intelligent Mobile Application)
이 프로젝트는 차량 내부에서 사용할 수 있는 센터페시아 프로그램 컨셉의 졸음운전, 휴대폰 사용 감지 및 경고음성 출력 서비스 를 제작하는 프로젝트였습니다.
졸음운전이나 휴대폰 조작 등 차량 내부에서의 이상행동으로 인한 교통사고는 꾸준히 발생하고 있습니다. 그래서 이번 프로젝트에서는, 비전인식 기술을 활용하여 운전자가 이상행동을 할 경우 이를 빠르게 감지하여 경고음성을 출력하도록 구현했습니다.
또한 경고 음성 출력시 AI 음성 기술을 활용해 지인의 음성을 학습하고 그 목소리로,경고를 출력하여 더 효과적인 경고를 출력하는 것을 목표로 하였습니다.
그리고 차량 탑승 시 사용자의 얼굴을 인식하여 사용자를 식별하고 지인 음성 등 저장된 설정을 자동으로 불러와 편하게 서비스를 사용할 수 있도록 하는 것을 목표로 잡았습니다.
GCP 및 NCP의 무료 크레딧 소진 문제로 지금은 서비스를 종료해 더는 사용해 볼 수 없지만, 관련한 Repository를 아래에서 확인하실 수 있습니다.
NCP에 호스팅한 Spring Boot Server Repository
한참 서비스했던 12월을 기준으로 보면 아래와 같은 서비스들을 사용했었습니다.
각 서비스들을 설명해보자면..
Server Instance 의 저장소 (SSD)로 사용하는 서비스로 기억합니다.
간단한 로그 확인은 무료로 할 수 있도록 도와줬던 서비스입니다.
세팅하는 게 굉장히 어려웠던 Certificate Manager...
Server Instance 내에서 certbot 등을 이용해 SSL 인증을 구현하는 것 보다는 ALB를 통한 프록시를 구현하고, ALB에 인증서를 달고 싶어 사용했던 서비스였습니다.
외부에서 발급받은 도메인 대한 인증서를 직접 등록해야 쓸 수 있었는데, 이를 등록하는 과정이 Windows 이외에는 할 수 없었어서, Window Server Instance를 빠르게 생성하여 거기서 원격으로 작업했던 것이 기억에 남습니다.
지금은 업데이트되어 좀 더 편해졌다는 뉴스레터를 봤던 것 같은데, 자세히는 확인 안해봐서 모르겠네요
관련한 삽질 내용이 궁금하시다면
참고: Certificate Manager 사용 가이드
AWS의 ALB와 거의 동일한 기능을 제공했습니다. 위에서 언급했듯 SSL 인증서 등록 + Server Instance Proxy를 위해 사용했고, 따로 부하에 따른 로드밸런싱은 구현하지 않았었습니다.
마찬가지로 AWS RDS와 거의 동일한 기능을 제공했었습니다. 처음에는 그냥 Server 를 MySQL 용으로 띄울까 했었는데, 이왕 쓰는거 좋은거 쓰자~ 하며 사용했었습니다.
다만 Replica 를 필수로 사용해야 했어서 그냥 Server에 MySQL을 구현하는 것보다 비용이 2배로 청구된다는 단점이 있었습니다.
프로필 저장 등을 위해 사용했었습니다.
처음 Server를 사용하면 ssh 접속을 위한 임시 IP만 있고, 실제로 서비스하기 위해서는 Public IP가 필요했습니다.
연결되어있는 Elastic IP 1개에 대해서는 비용을 청구하지 않는 AWS와 달리 1개부터도 비용이 청구됩니다.
AWS의 CodeDeploy처럼 이용할 수 있을까 싶어 살짝 건드려봤는데, Github Action에서 연동하는게 어려워 사용을 포기했던 서비스입니다.
NCP의 알파이자 오메가. 서버 인스턴스입니다.
위에서 말로 구구절절 설명하긴 했지만.. 아키텍처로 보는게 더 빠르실 것 같습니다.
구현한 서비스는 회원 정보 저장 및 외부 API 등을 사용하는 Spring Boot Main Server와, 졸음운전을 실시간으로 인식하는 FastAPI ML Server. 총 두 개의 Server를 사용하였습니다.
그중 ML Server는 NCP에서는 허가받은 사용자가 아니면 GPU Instance를 사용할 수 없다는 문제가 있어서 GCP에서 GPU Instance를 이용하여 구현하였습니다.
NCP를 이용한 서버는 Spring Boot Server인데, 위에서 언급했던 Load balancer, Server, Object Storage 등의 서비스를 적절히 이용하여 필요한 서비스들을 구현하였습니다.
가장 만족스러웠던 점은 역시 Server의 성능 및 한국어 친화적인 콘솔과 Document 아닐까 싶습니다.
물론 타 Cloud Platform에서도 어느정도 비용을 지출하면 좋은 성능의 Server를 이용할 수 있겠지만, 넉넉한 Credit으로 부담 없이 AWS Free tier보다 월등히 좋은 성능의 Server를 이용할 수 있던 점이 좋았습니다.
또한 여러 서비스의 Document들이 한국어로 작성되어 있어 단순한 기계번역이 많은 AWS Document보다 훨씬 읽기 쉽고 설명도 친절해서 더욱 쉽게 사용할 수 있었습니다.
아쉬웠던 점은 Elastic IP에 부과되는 비용과 중지시에도 부과되는 Server 요금 이었습니다. 물론 Credit으로 사용하긴 했지만.. Terminate시에는 요금이 부과되지 않는 타 Cloud Platform과 달리 꺼놓고 있어도 요금이 나가서 그냥 항상 켜고 있었던 것 같습니다. 또 안정적인 ssh 연결 및 서버 운영을 위해서는 고정 IP가 항상 필요했는데, 한 IP 부터 요금이 부과되는 점이 조금 아쉬웠던 것 같습니다.
Green Developers를 통해 국내 개발자를 위해 최적화된 NCP의 뛰어난 서비스 (Server, Object Storage) 등을 사용해볼 수 있었어서 너무 좋은 경험이었습니다.
Oracle, AWS, GCP 이외에 더 새로운 클라우드 플랫폼을 이용해볼 수 있었다는 점에서 더 재밌었던 것 같습니다!
수상1 | 수상2 |
---|---|
졸업작품이자 동시에 교내 경진대회 출품작이기도 했던 우리 하지마 서비스는 참여했던 두 대회에서 모두 상을 수상할 수 있었다.
FastAPI Server를 처음 구현해보는 팀원이 있어 많이 도와주기도 했고, 또 Spring Boot 3을 처음 사용해본 프로젝트여서 NCP 사용과는 별개로 많이 삽질했던 기억이 남는 프로젝트였다.
다만 Object Storage와 Server 등 필요한 인프라를 구축할 때는 NCP의 문서가 너무 잘 준비되어 있어 편하게 구축했었다.
제일 힘들었던건 Certificate Manager와 Load Balancer를 연동하는거였는데.. 이제는 Certificate Manager에서 직접 인증서를 발급받을 수도 있다고 하니 더 쉬워질 것 같다.
삽질도 많고 새벽까지 학교 연구실을 못 벗어나는 일도 많았던 프로젝트.. 그래도 결과가 좋아서 다 좋았었다!
다음 글 언제 올라오나요