프로젝트 전체 요약

챠밍·2021년 2월 16일
1

팀에서 진행했던 프로젝트의 구조에 대해 먼저 설명하고 내가 담당했던 부분을 차례대로 기록하려 한다.

프로젝트 설명

사진 내의 알약의 색과 모양, 각인을 인식하고 학습된 데이터를 기반하여 알약의 종류를 판단하는 기능을 지원하는 웹기반 프로젝트

  1. Spring에서 upload한 이미지를 받아 Flask로 보내서 AI를 통해 예측하고, 그 결과값을 Spring으로 보내 일치하는 정보를 DB에서 다시 Spring으로 불러와 React 화면단 에서 보여줍니다.
  1. 데이터 접근 용이성을 위해 ELK Stack을 도입하여 서버 모니터링과 실시간 로그 추적을 담당하도록 서버 아키텍처를 구성하였습니다.
    Flow는 저희 서비스에서 로그와 모니터링 데이터를 Elasticsearch에 보내고 Kibana로 시각화 하는 Flow입니다. Spring Boot에서 생산된 사용자 요청, 접근, 서비스에 대한 로그는 파일의 형태로 AWS 서버에 저장됩니다. 이 데이터를 Filebeat가 수집하며 Metricbeat는 서버의 상태를 실시간으로 모니터링하며 수집한 데이터를 Logstash로 보내게 됩니다. LogstashPipeline 을 통과하며 데이터는 Elasticsearch에 저장하기 위하여 JSON 형태로 인코딩되며 Elasticsearch는 해당 정보들을 저장하고 Kibana가 이를 시각화 합니다.
  1. 최종적으로 총 5개의 도커 컨테이너를 사용하며 서버 배포까지 완료 !

최종 결과물 시연 영상 !


느낀점

먼저 충분히 공부가 되지 않은 상황에서 지금까지 접하지 못했던 규모의 프로젝트를 진행하려고 하니 시작부터 막막했다. 구조나 기술력, 용어들 마저도 생소해서 열심히 따라가기 바빴던 것 같다.

특히 모델 학습 과정과 React에서 많은 시행착오를 겪었다. 내가 맡은 부분은 백엔드 였지만 프론트에서 조금 어려움을 겪어 1주일을 남기고 프론트를 도와주게 되었다. 기본적인 개념 이외 모든 것이 처음이 었던 프론트라 에러의 원인을 찾는게 힘들었다. Type error 부터 데이터를 전역 값으로 다루기 위해 redux 사용해야 하는 문제까지 .. 학교 커리큘럼 과정에서 몇몇 프레임워크를 다룬 적이 있지만 프론트와 백엔드를 나눠서 진행한 적은 없어서 클라이언트와 서버간에 데이터를 주고받는 과정에서 많은 시행착오를 겪었다.

지금까지 전반적인 구조나 흐름 자체를 제대로 이해하지 못하고 공부를 해왔다는 생각에 아쉬웠고, 래빗엠큐와 서버 배포 부분도 맡아서 해보고 싶었지만 시간상 더 잘하는 팀원분이 담당할 수 밖에 없었던게 아쉬웠다. 다음 프로젝트에서 내가 직접 해서 기록을 남기겠다고 다짐했다.

분야를 정해서 그 부분을 심도있게 공부하는것도 중요하지만 전체적인 흐름이나 구조, 왜 이렇게 일어나는지 왜 이렇게 해야만 하는지 이유를 아는 것도 중요하다고 느꼈다. 이번 기회를 통해 내가 정말 많이 부족하다고 느꼈고, 이 프로젝트를 하지 않았다면 나는 좁은 우물안에서 미래를 준비했을 것 같다. 앞으로 어떻게 준비해 나가야하는지 방향성을 잡은 것 만으로 정말 뜻 깊은 프로젝트였다.

profile
SW developer

0개의 댓글