본문 바로가기
콤퓨타/캡스톤프로젝트

캡스톤프로젝트 (4) - 중간중간 마주한 문제들

by 다_녤 2024. 5. 6.
반응형

 안녕하세요. 캡스톤 프로젝트를 시작한지 두번째 학기를 맞이했습니다. 마지막 캡스톤 관련 글은 지난해 12월 이후 업데이트가 없었는데요. 그동안의 진행상황 보고를 드리고자합니다.

 

 "플로깅을 통해 기부를 할 수 있는 어플리케이션"을 주제로 어플리케이션과 웹서버 개발을 진행하였고, 저는 전반적인 진행상황 발표와 클라이언트(안드로이드) 개발을 맡아 진행했습니다.

 

새롭게 알게 된 것들

1. 코틀린 문법들

 단순한 로직구현 수준에 필요한 문법들만 사용하다 by, apply, let과 같은 문법들이 사용된 안드로이드 소스들을 많이 접하다보니 그때 그때 필요한 문법을 더 공부했었습니다.

 

2. 안드로이드 개발 관련 지식

 마찬가지로 단순 페이징뿐 아니라, ViewModel, Coroutine 등 복합적인 처리 및 어플리케이션의 불필요한 리소스 낭비를 줄이기 위한 기술들을 활용해보았습니다.

 또한, 2학년 모바일프로그래밍 수업 때 다루었던 .xml 로 이루어진 UI구성을 벗어나, 이번 프로젝트는 전반적인 UI구성을 Jetpack compose를 활용하였습니다. composable 을 구성하는 모습이 React와 유사하다는 생각이 많이 들었습니다.

 Compose도 마찬가지로 특정 조건에 따라 recompose가 이루어지고, redendering(paint)가 진행된다는 것을 알게 되었습니다.

 

나의 발전들

1. 지난 학기보다 더 발전한 언변(?)

 매 수업 발표를 진행하면서 사람들 앞에서 자연스러운 제스처와 호흡으로 설명하는 능력을 더 기를 수 있어 저에게는 매순간 의미있는 시간이었습니다. 항상 내가 나의 제품에 대한 이해와 청중들의 이해의 차이를 염두하면서 발표에 임했습니다. 팀원들과 제품에 대해 대화하다보면 어느순간 서로 간의 '컨센서스'가 형성되고 굳이 배경에 대해 설명하지 않아도 소통이 되는 수준에 이르게 되는데요. 이런 대화에 익숙해져서 교수님 또는 청중들 앞에서 설명을 하면 전혀 이해할 수 없는 문법으로 발표하는 상황을 마주하게 됩니다. 그렇기에 항상 듣는사람의 이해와 나의 이해정도의 차이를 고려하고 말하는 습관을 가지게 되었습니다.

 

2. 깃(Git)과 깃헙(Github)을 응용하는 기술

 프로젝트 수업에 참여하기 전까지 저에게 깃은 단순히 그날그날 푼 백준문제 코드를 업로드하기 위한 도구, 일종의 개인클라우드같이 사용하기 위해 사용하는 깃허브 정도로 사용했었습니다.

 하지만 이번에 프로젝트에 참여하는 과정에서 이슈발행, branch 등 기본적인 git 사용 및 같이 협업하는 동기의 코드를 리뷰하고 PR close하는 경험도 해볼 수 있었습니다. 확실히 여럿이 개발을 할 때에는 git을 통해 관리를 해야된다는 것을 많이 느꼈습니다.

 

마주친 문제들

1. Localhost를 벗어나면서 마주한 문제들

 흔히 Local에서 개발하면 고려해보지 못할 문제들을 마주했습니다. 현재 프로젝트의 구성은 클라이언트 어플리케이션에서 플로깅을 마치면, 플로깅 한 쓰레기 사진을 찍어서 걸음수 정보와 같이 AWS EC2에서 띄운 서버에 전송하고, 스프링서버에서 이미지 정보를 재차 Flask 서버로 보내서 분석을 마친 후 플로깅 쓰레기 갯수 카운팅 결과값을 다시 스프링서버로, 스프링 서버에서 클라이언트로 response를 했어야 했습니다.

 이러한 분석과정이 20초 가량 걸리다보니, 처음에는 클라이언트에서 timeout 이 발생하고, timeout 시간을 30초로 늘려서 응답을 받는데에는 성공하였으나,  UX 관점에서 매우 안좋은 영향을 주는 포인트라고 생각이 들어 여러가지 해결방안을 고민중입니다.

 Loading bar animation을 조금 매력적으로 만들어서 유저에게 기다리는 시간을 줄이는 방법을 고민하기도 하고, flask server에서 이루어진 image analysis를 스프링서버에서 진행할 방법은 없을지도 고민중입니다.

 

앞으로 해야할 것들

1. 이제 마무리발표 준비

 프로젝트의 길고 긴 대장정을 끝내기 위해 판넬 제작도 해야하고, 프로젝트 설명 영상도 찍어야 합니다.

 기술적인 깊이도 물론 중요하지만, 다른 사람들에게 매력적으로 프로젝트를 설명하고 한번 더 눈이 가는 PT를 준비해야겠다는 생각이 많이 들었습니다.

 

2. 안드로이드! 안드로이드! 안드로이드!

 여전히 안드로이드에서 공부할 것은 너무나 많고, 너무나 방대합니다. UI부터 로직구현까지, 많은 부분을 공부하고 새롭게 알게된 부분들은 블로그로 정리해보려고 합니다.

 

다음에는 조금 더 완벽해져서 오겠습니다.

 

 

 

반응형