본문 바로가기
활동 및 회고

[221226] 2022 Solution Challenge Top 10 Finalist의 작고 소중한 팁과 경험 공유

by 민휘 2023. 1. 12.

블로그와 동일한 내용으로 솔루션 챌린지 인포 세션을 진행하였습니다. 글 대신 영상으로 시청해보세요!

 


 

안녕하십니까!

이제 슬슬 2023 Solution Challenge이 시작할 때가 됐고,

마침 인포 세션에서 솔챌 팁을 전수해달라는 요청을 받아서

몇 가지 팁과 함께 제로존의 경험을 공유하려고 합니다. 인조이~

 

 

목차

1. Top 10 혜택

2. Top 50에서 Top 10으로의 여정

3. 결과물 제작 팁

4. 구글 기술, 어디까지 사용해야하나?

5. 그외 자잘한 팁

 

1. TOP 10 혜택

(1) 어마어마한 상금과 퀄리티 높은 구글 굿즈!

(2) 각종 구글 sns에 내가 작업한 프로젝트가 소개됩니다. 2022 Solution Challenge 공식 사이트, Google Devleopers Twitter, LinkedIn, GDSC Korea Newsletter, Global Networking Event 등등 온 동네방네에 걸립니다. 우와~~

 

프로젝트 간단 소개

Zero-zone은 청각장애인들의 적극적인 의사소통을 지원하기 위한 서비스로, 구화 및 발음 연습 컨텐츠를 제공합니다. 핵심 기능으로 구화 및 발음 연습, 시험과 복습, 커스텀 연습 문제 만들기가 있습니다. 자세한 내용은 깃허브 데모 영상을 참고하세요. 팀원 구성은 FE 2명, BE 1명, ML 1명 총 4명입니다.

 

2. TOP 10 여정 소개

Top 50에 선정된 이후, Top 10 결과물을 제출할 때까지 제로존이 어떤 작업을 했는지 간단하게 소개하겠습니다.

Top 50에 선정된 팀들은 본인이 제시했던 솔루션을 개선하여 제출해야 합니다.

Top 10를 위해 제출하는 결과물은 Top 50 제출 결과물과 동일한 form과 데모 영상입니다.

 

개선 목표 설정

Top 50 발표가 난 다음 날 기획 회의를 했습니다. 방향성을 정하기 전에 팀원들의 상황을 고려하여 다음과 같은 조건에 합의했습니다.

  1. 개발 기간 3주 안에 끝낼 수 있는 작업량을 정할 것
  2. 개발 인력이 많은 프론트가 많은 작업을 담당할 것
  3. 1차 개발에서 활용하지 않은 ML을 사용할 것

 

솔루션의 거시적인 목표를 설정했습니다.

  1. 청각 장애인들이 적극적으로 의사소통할 수 있도록 돕는 서비스를 만들자!
  2. 그러려면 구화 발음 연습을 더 많이, 자율적으로 할 수 있어야 한다.

이 목표는 Top 50 데모 영상을 작성하면서 만든 문구인데, Top 10의 목표로 채택하였습니다.

 

 

그리고 다음과 같이 구체적인 목표(기능 개선)를 설정했습니다.

  1. 양질의 구화, 발음 연습 컨텐츠를 제공하기. 기존 데이터 800개에서 3200개로 확장
  2. 구화, 발음 연습 문제를 사용자가 생성할 수 있게 하기. 음성과 말하는 얼굴을 합성하는 Ml 모델 사용
  3. UI/UX를 사용자 친화적이게 수정하기. 중복된 UI 없애고 탭 횟수 줄이기

기능을 선정할 때는 저희가 개발하면서 추가했으면 좋겠다고 생각한 기능과 유저 피드백을 통해 받은 개선 사항을 리스트업하고, 처음에 합의한 조건에 따라 우선순위를 정해서 선정했습니다. 물론 팀원들의 개인적인 욕심도 반영되었습니다.

 

기획 회의 때 작성했던 회의록 일부

 

수행 과정

1. 제공 컨텐츠 확장하기

제공하고자 하는 글자, 단어, 문장만 엑셀 데이터에 기입해두면 그 데이터를 가지고 데이터베이스가 관리해야 하는 속성 값을 자동으로 채워 DB에 저장하도록 만들었습니다. 그리고 가장 관건이었던 학습 동영상의 자동 생성은 wav2lip이라는 모델을 사용했습니다. 단어나 문장을 input으로 넣으면 해당 단어를 말하는 사람의 동영상과 음성이 만들어집니다. 기존에 정적으로 제공하던 800개의 데이터 뿐만 아니라 확장한 3200개의 데이터도 자동화 프로세스에 포함시켜서 다시 만들었습니다.

 

저희가 기존에 제공하던 800개의 컨텐츠는 사람이 직접 입력한 것이었습니다. 데이터베이스에 들어가는 모든 엔티티와 학습 동영상은 저희 팀원들이 제작했습니다. 하지만 컨텐츠 개수가 4배로 늘어나면서 일일이 컨텐츠를 만드는 것은 불가능해졌습니다. 그래서 컨텐츠 제공 기능을 자동화하기로 했습니다.

 

2. 연습 문제를 사용자가 생성할 수 있게 하기

1번에서 구현했던 컨텐츠 자동 생성 기능을 활용해서 사용자가 연습 문제를 커스텀할 수 있는 기능을 만들었습니다. 컨텐츠 자동 생성은 이미 구현이 되어있으므로, 사용자로부터 커스텀 요청을 받아서 서버에 컨텐츠 생성 api 요청을 날려주는 단계만 추가하였습니다.

 

3. UI/UX 사용자 친화적이게 수정하기

 

멘토링을 받아 UI/UX 개선 작업을 진행했습니다. 굉장히 섬세하고 논리적인 피드백을 주셔서 디자인의 디도 모르는 저도 굉장히 흥미롭게 들었습니다. 함께 추천해주신 Google Material Design 시스템을 참고하여 앱의 전체적인 UI를 갈아 엎고 다시 만들었습니다. 플러터 담당 팀원들이 정말 고생을 많이 했어요.

 

 

3. 결과물 제작 팁

제출 폼 작성 팁 - 개발 일지를 작성하세요

사진은 솔챌 때 작성한 개발 일지는 아닌데, 이 양식이 이해하기에 더 좋을 것 같아서 첨부했습니다. 사용한 프로그램은 Obsidian!

 

제출 폼의 분량이 상당히 많습니다. 영문 1500자, 8문항을 작성해야합니다. 질문으로는 우리가 제시하는 솔루션 소개, 아키텍처, 개발하면서 어려웠던 점, 프로젝트 운영 과정 등등 작업한 내용에 대해 굉장히 폭 넓게 물어보기 때문에, 프로젝트를 하면서 개발 일지를 작성해놓으면 좋습니다. 저는 그날 작업한 내용, 고민, 트러블 슈팅 등을 정리해두었고, 제출 폼 작성할 때 이 일지를 정말 많이 참고했어요. 저희는 제출 폼을 정말 막바지에 작성했는데, 팀별 노션이나 개발 일지를 작성해둔 덕분에 내용을 쥐어짜낼 필요 없이 수월하게 작성할 수 있었습니다.

 

데모 영상 팁 - 컨셉을 적용해보세요

데모 영상을 통해 우리 서비스의 컨셉과 목표를 확실하게 각인시키고자 했습니다. 제로존은 교육 서비스이니까, 데모 영상의 화자는 선생님 시청자는 학생으로 설정하여 이 앱을 어떻게 활용할 수 있는지 전달하고자 했습니다. 영상을 보시면 알겠지만 굉장히 친절한 하이톤으로 (가식적으로) 설명하는 저의 목소리를 들을 수 있습니다 ^^

 

 

 

4. 구글 기술은 어느 정도로 사용해야 하나요?

솔루션 챌린지를 준비하시는 분들이 구글 기술을 어느 정도까지 사용해야하는지 고민이 많으실 것 같아 저희 사례를 공유하려고 합니다.

제로존의 프로젝트 아키텍처

프로젝트 아키텍처를 보시면 저희가 사용한 구글 기술은 **Flutter(FE), File Server(GCS), 클라우드 가상 머신(GCE)**로 총 세 가지입니다. 서버 개발 프레임워크는 스프링을 사용했고, 머신러닝 모델은 파이토치, 머신러닝 배포는 경량 웹서버를 붙여서 ngrok으로 배포했습니다.

직접 사용한 구글 기술 외에도 사용하려다가 실패한 경험도 어필했는데요. 아키텍처에는 포함되지 않았지만, 원래 머신러닝 모델을 엔드포인트에 배포할 때 구글의 Vertex AI를 사용하려고 했었어요. 그래서 머신러닝 담당했던 친구와 관련 공부를 하고 실습도 했는데, 배포를 하려고 보니까 GCP 측에서 코로나로 인한 수급 문제로 GPU를 제공하지 않았습니다. 결국 GCP로 머신러닝 모델을 배포하는 것은 실패했지만 이러한 경험을 폼 작성할 때 녹여낼 수 있었어요. 추가로 구글의 기술 뿐만 아니라, 구글이 제공하는 디자인 시스템인 material design을 참고하여 UI를 수정했다는 내용도 어필했습니다.

그래서 구글 기술 꼭 써야 하나요?

구글 기술만 사용할 필요는 없지만, 새로운 기술을 배울 여유가 있다면 사용하는 것을 추천합니다. 저희는 서버 프로그램 개발에 스프링을 사용했는데, GCP 멘토링에서 *“스프링은 무거워서 서버 비용이 많이 듭니다. 플러터를 쓴다면 파이어베이스를 붙이는게 비용도 덜 들고 구현도 간단할텐데 한번 고려해보세요.”*라는 조언을 들었습니다. 이때는 마감이 일주일 남은 시점이어서 이행은 할 수 없었지만, 아쉬움이 남습니다. 구글이 제공하는 기술들은 시너지가 좋은 조합이 있으니까, 팀원들끼리 잘 상의해서 선택하시기를 바랍니다.

솔루션 챌린지에서 사용할 기술을 선택할 때 가장 중요한 기준이 무엇인지 나름 고민을 해보았습니다. 저의 개인적인 의견이니 참고만 해주세요. 우리 팀의 솔루션을 소프트웨어로 구현하는 과정에서 발생하는 문제나 고민을 이 기술이 얼마나 효과적으로 해결해주는지가 기준이 되어야 한다고 생각합니다. 구글의 기술이 이 기준에 적합하다면 선택하고, 만약 구글이 아닌 다른 기술이 이 기준에 더 적합하면 그걸 선택하는게 좋을 것 같습니다. 구글도 이런걸 더 바라지 않을까요? (아님 말고)

저희 팀의 프론트엔드 팀원들은 안드로이드와 스위프트를 주로 사용하지만, 서비스의 확장성을 위해서 크로스 플랫폼을 지원하는 플러터를 선택했습니다. 서버 배포의 경우 운영 환경을 선택할 때 소프트웨어 운영에 더 강점이 있는 GCP를 선택했구요. ML은 오픈소스 모델을 활용했기 때문에 텐서플로우가 아닌 파이토치를 (반강제로) 사용했습니다.

물론 현실적으로 고려해야할 것은 팀의 러닝커브와 팀원들이 사용하고 싶어하는 기술이겠지만요.

 

5. 먼지 같은 팁

 

영어 쓸 일 정말 많습니다. 영어 잘 하는 사람 있으면 좋음!

데모 데이를 준비하면서 구글러 분들과 주고받았던 메일

 

Top 50, Top 10 때 제출하는 결과물인 form과 데모 영상은 모두 영어로 구성해야합니다. 뿐만 아니라 Top50에 진출한 후 얻는 멘토링도 영어로 이루어집니다. 저희는 정말 감사하게도 Google Korea에서 한국 구글러 분의 멘토링을 지원해주셔서 한국어로 진행할 수 있었습니다. 하지만 처음 받았던 멘토링은 영어로 진행했는데, 소통하는데 다소 어려움을 느꼈어요. (이후로 cs 공부할 때 의식적으로 원어로 보고 있습니다)

Top 10이 확정된 이후 데모 데이를 준비하는 과정에서도 영어와의 사투를 벌여야 했습니다. 데모 데이는 라이브로 진행되기 때문에 저희가 영어로 답변하는게 그대로 송출되어서, 스크립트를 쓰고 팀원들끼리 2주 정도 온라인으로 만나서 매일 답변 연습했습니다. 그 결과는.. 여기에

그외에도 해외 구글러 분들과 이메일 소통, 구글 밋으로 라이브 소통할 일도 있습니다. 팀원 중에 영어를 자신있게 담당하시는 분이 한명 있으면 정말 좋을 것 같네요.

 

개발 근황을 공유하세요

저희는 플러터랑 스프링으로 규모 있는 서비스를 만드는게 처음이었기 때문에 초반 개발 속도가 많이 느렸어요. 이대로는 제 시간에 끝내기가 어려울 것 같아서 주기적으로 만나서 개발 근황을 공유하고 다음 미팅 때까지 만들어올 기능을 선언했습니다. 서로 긴장감을 유지할 수 있어서 좋았어요.

 

GCP 크레딧 돌려막기

이걸 올려도 될지 모르겠는데… 음 모르겠다 문제되면 내릴게요!

솔루션 챌린지에 참여하는 팀들 대상으로 GCP 크레딧을 50달러 지원해주는데요, 저희 팀은 서버 프레임워크로 스프링을 사용했더니 리소스를 많이 먹어서 그런지 크레딧이 턱없이 부족했습니다. 더 이상 내 피 같은 돈을 서버비로 날릴 수 없어서, 크레딧 돌려막기를 결심했습니다. 구글 계정을 새로 만들고 GCP에 가입하면 무료 크레딧 300 달러를 지원해주는데요, 그 크레딧을 다른 계정의 프로젝트로 끌어서 사용할 수 있습니다. 자세한 방법은 구글링을 통해 알아보세요.

-> 피드백 주신 분께서 크레딧 돌려막기 때문에 환불 과정에서 불이익을 본 적이 있다고 하시네요..! 참고하세요

 

마치며

프로젝트가 끝난지 반년이 넘어서 과연 기억이 잘 날까 걱정을 했는데, 전혀 그럴 필요가 없었네요. 기록해놓은 것들 보니까 힘들었던 기억이 새록새록.. 솔루션 챌린지를 준비하면서 지치기도 했지만, 배운 것도 얻은 것도 정말 많았습니다. 함께 고생해준 팀원들과 적극적인 도움을 주신 구글러 분들, 응원해준 gdsc 팀원들과 지인, 가족들께 정말 감사하다는 말씀 올립니다.

긴 글 읽어주신 여러분도 솔루션 챌린지에 참여하시고 많은 것들을 얻어가셨으면 좋겠네요.

다들 힘내시길!! 할 수 있을겁니다 화이팅🔥