프로젝트 설계 단계
해당 프로젝트를 실행하기전 필자는 방학 동안 React와 Spring 맛보기 공부 찍먹을 했었고
이를 바탕으로 이번년도 동안 공부하면서 준비한다면 웹을 만드는 프로젝트를 도전해볼만 하다는 생각이 들었다.
그렇게 하여 학교 지도교수님을 섭외하고 피드벡을 받게 되었는데
왠 걸 교수님께서 지금 준비하려는 프로젝트는 기능적인 요소에서 카메라를 사용해야 하므로 웹이 아닌 네이티브 앱으로 만드는 고민을 해보라고 하셨다.
여기서 필자는 1차 멘붕이 었다.
방학동안 웹은 조금이나마 공부했지만 앱은 처음 듣는 소리 였기 때문이다.
그리하여 앱에 대해 공부를 시작하게 되었고
앱이 총 4가지 종류로 나뉨을 알 수가 있었다.
- 모바일 웹: 모바일 환경의 사용자 분들을 대상으로 변경한 웹
- 카메라 같은 핸드폰 기본 고유 기능을 활용할 수 없거나 사용이 힘듬
- 네이티브 앱: IOS, 안드로이드 별도의 운영체제를 대상으로 만들어진 원시형태의 앱
- 각 운영체제의 모든 기능을 가져다가 쓸 수 있고 퍼포먼스 적으로 성능이 띄어난 앱을 만들 수 있음
- 하이브리드 앱(웹뷰): 외관만 IOS, 안드로이드로 꾸며놓고 그 안에 웹페이지를 띄우는 형식
- 크로스 플랫폼 앱: 하나의 언어로 모든 플렛폼에 대응가능한 앱
- 여기에 웹페이지를 띄우는 방식을 추가하면 크로스 플랫폼겸 하이브리드 앱이 됨
여기서 필자가 처음 기획했을 때는 모바일 웹 형태로 만들기 고안했었고 휴대폰의 카메라 기능을 활용하기 위해선 지도교수님의 조언대로 네이티브 앱으로 만드는게 좋다는 생각을 할 수가 있었다.
이제 어떤 형태로 서비스를 만들 것인지는 결정이 되었는데 이제 이것 어떤식으로 구현할 것 인가?
에대한 고민을 해야되는 시기가 왔고
프론트: React, 백: Spring -> 프론트: Kotlin, 백: SpringBoot
으로 계획을 변경하되 웹은 Spring에서 페이지 째로 넘겨주는 방식으로 동작하는 걸 알고 있었지만 웹이랑은 어떤 상호작용을 거치는 지를 알지 못 했다.
얇은 배경지식으로 맨땅에서 시작하는 나는 열심히 학교 선배님들과 졸업하신 현업자 선배님께 질문을 구하거나 열심히 구글링 하면서 Rest API 라는 개념에 대해 알게 되었고
일단 rest api는 웹이든 앱이든 url mapping을 해놓으면 그걸 rest api라고 불러 ㅎ 또 웹역시 json데이터만 서버에 요청이 가능해 ajax , axios , fetch에 대해 알아보렴 ㅎ 네가말한것중 웹에 대응하는 서버는 jsp, html,ejs등 웹 템플릿을 같이 넘겨주는 방식이 10에 9할이구 , 앱에 대응하는 서버는 오직 data만 넘겨준다는 내용은 맞아 ㅎ
본질적으로 앱이 서버를 필요로 하는 이유는 필요한 데이터를 데이터 베이스에서 꺼내오기 위해서 임을 생각하고
해당 요청을 서버에게 보내고자 할 때 대응되는 데이터를 RestAPI를 통해 보내고 서버는 Mapping 되는 함수에 기능에 따라 DB에서 해당하는 데이터를 가지고 JSON 형식으로 프론트에게 응답을 해주는 일련의 과정을 생각 할 수 있었다.
이제야 머릿속에 그림이 그려지기 시작해서
덕분에 해당 프로젝트에서 백을 담당 할 경우 어떤 부분을 공부해야 하는지 명확히 알 수 있었다.
일단은 Spring을 통해 DB의 데이터를 가지고 오는 방식에 대해 공부해야 했고
그래서 해당 강좌를 돈을 써서 결제해서 들어보긴 하였는데 아무래도 방학동안 Spring의 기본 개념을 탄탄히가 아니라 절반정도 찍먹한 방식으로 강의를 듣다보니 이해가 되지 않는 부분이 많아서
처음부터 다시 시작한다는 마음으로 인프런 에서 백엔드 스터디 코스를 차근차근 밝기로 했다.