Skip to content

guraudrk/finalproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

내용정리의 내용

1.프로젝트의 이름 2.프로젝트 요약 설명(설명/기간/같이한 사람들 수/맡았던 역활) 3.사용한 기술 스텍 4.구현 기술(어떤 기술을 사용하여 어떤 것을 구현했는지) 5.시행착오(유의미한 경험/얻은 인사이트,겪은 오류,해결 방법,갈등 및 해결) 6.참고 페이지

다 적었으면 깃허브 메인 페이지에 자기소개를 설정한다. 설정법은 gpt한테 물어봐~~

1.부트캠프 최종프로젝트

프로젝트 이름-ai기반 도로장애물 탐지 서비스(영어 이름은 ROADs(Road Obstacle Ai Detection service))

프로젝트 요약 설명(설명/기간/같이한 사람들 수/맡았던 역활)-도로이용불편 민원의 꾸준한 증가에 따라 이를 해결하기 위해 도로 장애물을 yolov8인공지능을 통해 감지하고, 그것을 데이터베이스에 저장한다. 데이터베이스에 저장한 데이터를 마커로 나타낸다. 데이터를 기간/지역별로 보이게 할 수 있는 페이지도 제작하여, 도로 장애물 데이터를 손쉽게 관리할 수 있게 하였다.

서비스에 대한 설계도는 다음과 같다.(roads ppt의 11번 캡쳐해서 사진 올리기)

프로젝트는 2달동안 진행이 되었으며,

총 4명과 멘토 1명이 진행하였다.

필자는 이 프로젝트에서 ai 모델 조사 및 웹페이지 개발 및 디자인,db 구축 및 연동, back-end 개발을 맡았다.

사용한 기술 스텍

두괄식으로 정리하자면 다음과 같다.

collaboration: google drive, slack, github design: figma data: ai hub(데이터 수집),postgresql cloud:aws(s3,polly,iam) analytics/machine learning: python,pytorch,opencv,yolov8 web:flask,html/js/css back-end:spring-boot,spring data jpa,java

필자는 이 프로젝트에서 python,pytorch,opencv를 제외한 모든 기술 스택을 사용하여

프로젝트를 완성하였다.

실제로 시간을 많이 쓴 부분은 백엔드였는데, 데이터베이스와의 연동/로그인/회원가입/데이터를 한눈에 간단히 볼 수 있는 페이지 제작 등 다양한 기능을 처음 구현하는 데에 시간이 걸렸기 때문이다.

구현 기술

aws- 우선 aws를 사용하기 위해 iam을 통해 프로젝트에서 aws 기능을 쓸 수 있게 해주도록 자격을 주었다. aws s3 기능을 통해 도로에서 장애물을 탐지 시 찍힌 사진이 자동으로 s3 버킷에 저장될 수 있게 하여 이미지를 따로 데이터베이스에 저장하지 않고도 이미지를 웹 페이지에 불러올 수 있게 하였다. 또한, aws polly 기능을 사용하여 현재 위치에서 도로 장애물(마커)가 존재하면 장애물의 존재를 음성 안내로 알려주는 기능을 구현했다.

웹-백엔드와 프론트엔드 기능을 사용하여 웹 페이지에 회원가입/로그인/아이디,비밀번호 찾기/메인 화면/데이터 요약 페이지 등을 구현했다.

백엔드- 이 프로젝트는 springboot를 활용한 레이어드 아키텍쳐를 이용해 개발되었다. 이를 통해 모듈화, 유지보수성, 확장성을 보장할 수 있게 되었다.

설정 계층인 config에서는 애플리케이션 설정을 중앙에서 관리하였다. 컨트롤러 계층인 controller에서는 http요청을 처리하고 적절한 서비스로 요청을 전달한 후 결과를 반환한다. 데이터 전송 계층인 dto에서는 데이터 전송을 위한 객체를 정의하여 엔터티와 비즈니스 로직 간의 결합을 줄인다. 도메인 계층은 entity에서는 애플리케이션의 핵심 비즈니스 엔티티를 정의하고, 이를 데이터베이스 스키마와 매핑한다. 영속성 계층인 repository에서는 데이터베이스 접근과 저장을 관리하며, 주로 spring Data JPA를 사용해 엔티티의 CRUD 작업을 처리한다. 서비스 계층인 service에서는 비즈니스 로직을 처리하며, 컨트롤러의 요청을 받아 리포지토리와 상호작용한다.

프론트엔드-제이쿼리를 통해 자바스크립트 작업을 간소화하는 경험을 하였고, cdn을 통해 부트스트랩 등의 프레임워크를 쓸 때, 이를 직접 설치하지 않고 테마가 있는 사이트에서 테마를 불러온다. html,javascript를 통해 카카오맵 api를 불러오고 사용하며, 현재위치 계산 기능,최적 루트 찾기 기능, 거리 계산 기능 등 지도 서비스를 더 편하게 쓸 수 있는 기능들을 구현했다.

5.시행착오

유의미한 경험/인사이트: 1.이 프로젝트 전에 react,node.js를 기반으로 프로젝트를 한 적이 있었어서 프론트엔드를 어떻게 개발하는지는 대충 감이 왔었는데,

java를 기반으로 한 백엔드 개발 경험은 없어서 초반에 감을 잡지 못하였다.

하지만, springboot에 대한 공부, 아키텍쳐에 대한 공부 등 백엔드 공부를 꾸준히 한 결과

레이어드 아키텍쳐를 기반으로 웹 페이지를 제작하는 데에 성공했다.

2.현업에서 10년 넘게 종사하신 멘토님께서 코딩에 돌입하기 전 우리에게 현업 기준의 매우 깐깐한

개발 문서 작성을 요구하셨다.

우리는 srs(Software requirements specification), 프로젝트 기획서(서비스 구성,수행 절차, 계획 등을 작성),

개발 설계서,db 구조,학습 설계서, 페이지별 세부 설계,데이터베이스 스키마 등을 매주 작성해야 했다.

처음에는 문서를 작성하는 것 자체가 매우 어려운 일이여서 멘토님과의 갈등이 있었으나,

'현업을 기준으로 하는 개발 문서 작성 경험이 중요하다'라는 멘토님의 설득이 있었고, 팀원들끼리도 이를 듣고 서로 협력하여 개발 문서 작성을 무사히 마쳤다.

(사진자료)

겪은 오류와 해결 방법

앞서 이야기한 대로 필자는 백엔드 개발 경험이 없어서 초반에 감을 잡지 못하여

주먹구구식으로 로그인, 회원가입 기능을 개발하였다. 즉, controller,dto 등을 쓰지 않고 해당 기능을 구현하려고 시도를 했다.

하지만, 백엔드에 대한 지식이 없어 많은 오류가 났던 것은 당연한 일이었다.

이에 '아키텍쳐가 중요하구나'라는 것을 깨달은 뒤, 백엔드에 대한 기초적인 공부가 끝난 뒤 아키텍쳐에 대한 공부를 하고 개발을 하여

훨씬 쉽고 재미있게 기능들을 개발할 수 있었으며, 아키텍쳐에 대한 지식도 얻어갔다.

갈등과 해결

필자는 인공지능이 분류한 사진 데이터를 받아 aws에 저장하여 웹 페이지에 띄우는 역활을 하였다.

하지만, 인공지능 파트를 맡은 사람들과 의견 충돌이 생겨 사진을 저장하는 방법에 대한 변경에 대해 갈등이 생겼다.

자칫 감정싸움으로 갈 뻔 했으나, 상호 커뮤니케이션을 통해 인공지능 파트의 사람들이 사진을 aws s3 버킷에 저장하고 그 주소를 데이터베이스에 저장해

사진을 띄울 수 있다는 것을 몰라서 일어난 갈등이라는 것을 알아낼 수 있었다.

이에 서로간의 감정을 해소하고, 문제를 잘 해결할 수 있었다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors