1)BE
SW 공모전에서 Web 풀스택 개발 과정에서 Node JS로 백엔드를, React JS로 프론트 엔드를 개발하며 겪은 문제입니다.
저는 OOO OOO SW 공모전 본선에서 “OOO”라는, 언콘택트 시대에 초등 교육 플랫폼 및 툴인 ‘e학습터’, ‘클래스팅’의 한계를 보완하는 최초의 교육 지원 웹 어플리케이션을 초등 교사 설문을 통해 기획하여 8월 말부터 팀 프로젝트로 제작 중이며 원래 백엔드 개발을 담당했습니다.좋은점 1
Node JS를 활용하여 express server를 갖추고, NoSQL인 MongoDB를 사용해 DB를 연결하여 회원 관리를 했습니다. 그리고 express server에 미들웨어를 사용하여 기능별 router를 설정하고, session을 설정하여 사용자가 로그인 했을 경우에만 session이 생성되어 사이트를 이용 가능하도록 했습니다. 회원을 추가하여 user data가 mongodb에 추가될 때는, virtual 함수를 사용하여 비밀번호를 암호화하여 저장했습니다. 이후, 전체 코드를 설정과 database, route등의 기능별 모듈들로 세분화하여 운영 및 관리를 편하게 하였으며, passport의 OAUTH 방식을 사용하여 FACEBOOK 로그인 기능 등을 포함하여 로그인 시 사용자 인증을 가능케 했습니다. 현재는 socket.io 기술을 사용하여 실시간 단체 대화방 기능을 개발하고 있습니다.좋은점 2
하지만 문제는, 뷰 엔진과 semanctic UI를 사용해 임시로 프론트 엔드를 구성하여 테스트하다가, React로 개발된 팀원의 프론트 엔드 파트와 백엔드 코드를 연결할 때 발생했습니다. React에 관해 잘 모르던 저는, 웹 디자인만 완성되어 있고 post를 활용해 백엔드로 데이터를 전송하는 기능은 갖춰져 있지 않은 프론트엔드 소스 코드를 완성시켜야 했습니다.
그래서 저는 Node JS와 React JS를 활용하여 앱을 구현하는 유튜브 강의 등을 통해 React JS에 관해 배울 수 있었습니다. 하지만 React JS는 러닝 커브가 높아 배우는 데 많은 시간이 필요한 기술인 만큼, 현재 팀원의 React JS 소스 코드를 이해하고 필요한 부분을 넣는 것에 어려움을 겪는 상태입니다. 실제 완전한 앱으로 완성시키기 위해 현재 노력 중입니다.아쉬운점 1
한편, 저는 프랑스의 OO OOOO이자, ’OOOO’의 전신인 OOOO에 장학생으로 파견되어, Docker, Ansible, Kubernetes를 활용한 DevOps 프로젝트들을 8주간 수행하며, 3개의 웹 어플리케이션을 구현했습니다. 영문으로 된 공식 문서들을 읽으며 DevOps의 개념과 기능, 구현 방법에 대해 배웠습니다. Python과 Node JS로 작성된 프론트 엔드 소스 코드와, Redis 와 PostgreSQL을 활용한 데이터 전송 및 저장 기능, Java로 작성된 백엔드 소스코드를, digital ocean의 각 클러스터에 두고, 이후 traefik, cadvisor를 통해 Deployment 스케쥴링 하는 법을 배우려 노력했습니다. 그리고, 각 역할에 맞는 yaml 파일을 작성하는 법 등을 시행착오를 통해 배웠습니다. 결국 팀은 결과물로써 빌드 및 Automatic Deployment에 성공하여, 투표 서비스 웹 어플리케이션을 구현해냈습니다. 그리고 이것은 각자의 팀워크와 DevOps 활용 능력 증진을 통해 풀 스택 엔지니어로 거듭나는 중요한 한 걸음이 되었습니다.아쉬운점 2
또한, 시큐레이어에서 AI 신기술이기에 기존의 연구 논문 수가 부족한 Meta feature extraction과 AutoML을 연구하며, 약 15개 이상의 영문 논문을 심층 분석했습니다. 그 결과, 자체적 AutoML 구현 역량을 쌓았으며 논문 작성 예정입니다. meta feature가 dataset의 characteristics measures으로 정의되며, dataset 간의 유사성을 측정하기 위한 용도로 dataset으로부터 추출된다는 것을 파악했습니다. 그 후, OpenML, 사이킷런의 AutoML 라이브러리, 그리고 Feature selection algorithm recommendation 논문 등 기존 MFE 활용 방안의 프로세스를 심층 분석했습니다.
그 결과, OpenML와 같은 기존 dataset 및 그에 대한 solution을 저장한 repository를 활용해, 사이킷런의 AutoML은 input dataset에 대한 meta-learning을 진행하여 그것과 가장 유사한 데이터셋 그룹에서 사용된 학습 알고리즘과 파라미터를 추출하여, 그것에 전처리 및 분류 학습과 Bayesian 최적화를 진행한 후, 앙상블 기법으로 최적화하는 과정을 통해 input dataset에 대한 최적의 AI 솔루션을 도출하며, FS Algorithm은 meta learning를 활용해 최적의 FS model을 추천한다는 결론을 얻었습니다.
아쉬운점 3
2)Android
OOOO OOO에서 6개월 간 Capstone Project를 주도한 경험이 있습니다. 심박수에 따른 사용자의 심리 상태 파악과 그에 따른 적절한 음악 제공이라는 저의 초기 사업 기획에 근간하여, 팀원들과 앱의 기능과 디자인을 점차 구체화시켰습니다. 또한, 이것이 사용자들의 일상의 스트레스를 줄여줄 것이라는 비전을 팀이 함께 공유하며, 6개월 간 서로의 파트를 성실히 수행했습니다. 저는 아두이노 코딩과 UI개발, 심박수 분석 알고리즘 탐색 및 개발을 맡았습니다. 기본적인 UI를 개발하고 버튼 클릭 등으로 UI간 이동이 가능하도록 JAVA로 코딩했습니다. 그리고 아두이노를 코딩하여 하드웨어와 모바일을 블루투스로 연결하여 센서로 사용자의 심박수 데이터를 읽어 와 그래프로 시각화했습니다.
좋은점 3
하지만 문제는 센서에서 받아온 데이터를 분석하여 사용자의 심리 상태를 추정하기 위한 알고리즘을 구현할 수 없었습니다. 왜냐하면 심박수의 구간을 명확히 구별하여 그에 맞는 인간의 심리를 구별한 연구 논문이 존재하지 않았기 때문입니다. 그렇기에 읽어 온 심박수 데이터를 계산 및 분석하여 사용자의 심리 상태를 파악하는 기능 대신, 그래프로 시각화하여 보여주는 기능으로 대체했습니다.
한편, 심리 상태를 파악할 수 없으므로 음악 추천 기능의 경우, 사용자의 spotify 계정과 앱을 연결하여 spotify 자체적인 추천 기능을 이용할 수 있도록 대체했습니다. 연구 논문이 부재한 한계를 극복하여, OOOO라는 초기 어플리케이션을 완성해냈고, 아이디어의 참신성과 성실한 과정 수행을 인정받아 OOOO OOO에서 A등급 프로젝트로 선정되었습니다.좋은점 4
좋은점 1 프로젝트 개요에 해당되는 부분입니다. 잘 정리했습니다.
좋은점 2 개발 환경에 대한 상세한 내용으로 인해 이 경험이 진정성 있게 느껴진다는 점이 좋습니다.
아쉬운점 1 문제 해결 경험을 쓰라고 했는데, 아직 완성되지 않은 프로젝트 경험이고 제시한 부분에 대한 문제가 해결되지 않았다는 점이 아쉽습니다. 물론 질문에서 해결되지 않은 경험이라도 쓸 수 있다고 했지만 해결된 경험이었다면 더 좋았을 것입니다.
아쉬운점 2 이 내용은 특정한 기술적 문제를 해결하는 내용이 아니라 자신의 경험을 제시한 내용이라는 점이 아쉽습니다.
아쉬운점 3 이야기 소재는 호감을 주지만 질문의 의도에 맞게 작성되지 않았다는 점은 아쉽습니다. 이 경험속에서 무엇을 배웠다는 것도 중요하지만 질문에서 요구한 것은 기술적으로 어려운 문제를 해결한 경험입니다. 이 요구사항에 맞춰 작성할 필요가 있습니다.
좋은점 3 프로젝트 개요, 목표, 자신의 역할 등을 잘 설명했습니다.
좋은점 4 항목의 의도에 맞게 잘 작성되었고, 이야기 소재도 호감을 줍니다. 결과가 좋았다는 부분도 좋았습니다.