공대생의 개발 일기장

프로젝트 완성...? 본문

프로젝트

프로젝트 완성...?

SeoKyung 2023. 7. 3. 02:35

*모든 부분은 학교 측에 허가를 받았음.

*백엔드 개발자로 참여했음.

*코드는 깃허브에

 

https://github.com/SeoKyung0221/FirstProject

 

GitHub - SeoKyung0221/FirstProject

Contribute to SeoKyung0221/FirstProject development by creating an account on GitHub.

github.com

 

최종 결과물
최종결과물2

사실 이 프로젝트 참여라는 것 자체가 나에게 굉장히 잘못된 선택이 아니였을까..? 아니 힘든선택..?

 

 

1. Java 어떤 자료구조가 있는지 전혀모름. 

2. Spring 어떻게 하는지 모름. Intellij 써본 적 없음. 이클립스만 써봄.

3. 전공 풀학점 + 코딩테스트 공부 + 알바 = 시간부족

 

1, 2, 3을 각자 어떻게 해결했는지에 대해서는 그냥... 인터넷에 무료강의, 무한한 구글링으로 이겨냈다.

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

스프링 강의는 인프런에서 무료강의인 김영한님의 강의 이것만 들었고 이것도 정말 굉장한 도움을 주었다. 일단 Spring이 대체 뭐하는 구조인지, Intellij는 어떻게 쓰는지 단축키 등등 전체적인 틀을 볼 수 있었기에 참고도 많이하고 부족한 부분이 있다면 그 부분은 구글링으로 충분히 해결할 수 있었다.

 

주제는 "보기 어려운 학교 예약시설(특히 운동장)을 한눈에 볼 수 있게 웹서비스를 제공하자"였다.

 

프로젝트를 시작하기에 앞서 팀원들과 주제를 정할 때 굉장히 많은 구현 부분이 나왔지만 최종적으로 구현할 수 있었던 건 예약현황을 가져오고 이를 달력형태로 보기 쉽게 UI만 제공해주는... 그런 좀 아쉬운 형태가 나왔다.

 

예약현황은 크롤링을 통해 가져오고, 이를 DB에 저장하고 JSON으로 프론트 서버에 제공하는게 내 역할이였는데 Spring도 spring인데 아... 이 크롤링이 정말 쉽지 않았다. 있었던 일을 나열해보자면

 

1) 모두에게 공개된(public) 학교 홈페이지에서 조회할 수 있는 예약현황 페이지로부터 크롤링 시도-> 학교 측에서 바로바로 갱신을 해주는 것이 아니여서 부정확한 정보를 제공한다는 것을 알게됨. 취소.

 

2) 학교 측으로부터 정보를 제공받을 수 있지 않을까?-> 학교 측에서 내부회의를 해보겠다는 답변을 주고 기다렸는데 2주간 연락없었음... 다시 연락하니 불가하다는 결론.

 

3) 학생들에게만 공개된(private) 페이지에서 조회할 수 있는 예약현황 페이지로부터 크롤링 시도-> 다행히 학교 측에서 이정도 정보는 크롤링 허가. JSOUP으로 진행.

 

4) JSOUP 공부 및 크롤링 시도.-> 실패. JSOUP공부는 정말 열심히 했는데 근본적으로 JSOUP으로 토큰 인증 방식 등등 여러가지 방식으로 로그인을 시도해봤지만 아무래도 우리가 모르게 해당 페이지에 다른 보안이 있는 것 같음. 이또한 문의해보았는데 거절ㅠ

 

5) 셀레니움이라는 것이 있는 걸 알게됨.-> 크롤링 종류에 셀레니움이란 것도 있고 이거는 그냥 직접 사이트에 로그인하는 방식으로 접근이 가능해서 충분히 크롤링 가능할 것 같다고 생각함. 앞서 시간을 너무 많이 사용해 시간이 촉박해서 JSOUP때처럼 느긋하게 공부하지 못하고 구글링하며 형식을 비슷하게 맞추면서 조금씩 조금씩 수정해나감. 근데 이게 사실상 공부랑 다름없음.

 

6) 셀레니움으로 작업-> 크롤링 코드를 짜는게 여간 어려운게 아니였다. 워낙 원하는 탭에 접근해야 하는 단계가 많아서... 어쨌든 구현성공.

 

여기까지가 크롤링 하나에 대한 과정인데 하... 시간 정말 많이 잡아먹었다. 일단 파이썬 크롤링 글, 영상은 정말 많은데 자바는 너무 적다..!!!! 이쯤이 아마 5월쯤이였던 것 같은데 이때부터 DB를 급하게 공부했다. 사용한건 뭔가 만만해보이는 MYSQL. 사실 공부랄 것도 없이 그냥 20분짜리 영상하나를 따라하면서 설치도하고 DB도 생성해보고 Table도 만들고 이에 따른 쿼리문도 작성하고 인텔리제이에 연동하고~ 생각보다 일사천리로 끝났다. 쿼리문이 진짜 오래걸릴 줄 알았는데 다행히 이 DB부분은 같은 백엔드를 맡아주신 팀원분이 해결하셨기 때문에 한시름 놓았다. 이번 방학 때 DB도 공부할 것이다..!

 

이제 최종적으로 크롤링을 DB에 맞게 그러니까 년, 월, 일, 시작시간, 종료시간, 누가, 무엇을 으로 구분한 Data를 JSON형태로 api를 전달해야 했기 때문에 이에 대해서 코드를 좀 만져보고...

 

여기서 Spring을 진짜 겉핥기로 배우다보니까 뭐만하면 에러뜨고 에러안떠도 원하는 결과 안나오고 걍... 지옥이였다. 어찌어찌 JSA인가도 막 찾아보면서 건들다보니 왜 성공했는지 인과도 잘 모르겠는데 번뜩이는데로 코드 작성하다보니 잘 됐다.

 

마지막으로 프론트분들이 따로 작업하신 것을 받아서 스프링에 병합하는 과정을 가졌는데 이게 또 안돼... 바스스 흩어지려는 멘탈을 부여잡고 어찌어찌 병합했더니 뭔가 문제가 하나보였다. 이걸 수정했더니 아까까지 멀쩡했던 부분이 에러가... 아오 결과적으로 font 문제를 제외하고는 모드 해결했는데 결국 font는 해결못했다.

 

배포는 아쉽게도 금전적인 문제로 이어지진 못했다. 다만 ngrok을 이용해서 내 데스크탑에서 임시로 localhost:8080 서버를 다른 url로 변경해 서버를 열어 팀원들이 다른 컴퓨터 환경에서 체험해볼 수 있게 했는데 다행히 성공적이였다.

 

이렇게 프로젝트를 마무리 하게되었고 와... 정말 많은걸 배우긴 한 것 같다. 뭐라고 하나로 정리할 순 없는데 일단 프로젝트에서 백엔드가 어떤 역할을 하고 어떤 일을 수행해야 하는지 정도는 알게된 것 만으로도 큰 수확인 것 같다. html에 대한 부분도 좀 박치기로 해서 허술하긴한데 조금은 알게된 것 같고 처음엔 낯설기만한 intellij나 Spring도 많이 익숙해졌다. ngrok으로 임시서버를 여는 것은 아마 오래오래 이용해먹지 않을까 싶다! 전체적으로 높은 레벨업은 아니지만 성장을 한 프로젝트였다! 

 

가장 중요한 건 나같은 놈 받아서 프로젝트 수행한 우리 팀원들.... 어딜가든 성공해라 제발 고맙다...

 

'프로젝트' 카테고리의 다른 글

크롤링 중간 결과  (0) 2023.05.02
IntelliJ를 이용한 크롤링...??  (0) 2023.04.25
프로젝트 시작  (0) 2023.03.22