0️⃣ 마켓컬리 앱 따라하기

0️⃣ 마켓컬리 앱 따라하기

안녕하세요! 꽤나 오랜 시간 동안 게시글이 뜸했던 것 같습니다.

요근래 건강 악화와 불면증 등의 문제로 포트폴리오를 제작하고 공부하는데 조금 의지가 떨어지더라구요.

하지만 생활 습관 개선과 병원 치료로 많이 개선되었고,

다시 시작해야겠다는 생각이 차차 들어서 다시 글을 작성하게 되었습니다.

2021년도가 끝나가는 시점에 되돌아보자면 1, 2월에는 한국전자통신연구원 연구연수생 기간으로 시간을 보냈으며,

3, 4월에는 운전면허 취득을 위해 도로 주행 시험의 불합격의 고배를 마시며 보냈던 것 같습니다.

또 6월부터 11월까지는 국민취업지원제도를 통해 동영상 강의를 통한 교육의 기간과 구직활동을 했답니다.

그 과정 속에서 포트폴리오에 대한 구상을 하기도 하며,

포트폴리오 제작시 사용하게 될 라이브러리에 대해서 조사하고 공부하는 시간을 가졌답니다.

제가 기획한 포트폴리오는 기존에 없는 새로운 서비스를 제작하기 보다는

취업하고자 하는 회사에서 사용하게 될 라이브러리나 기술들을 실제로 사용해보고 적응해나가는게 좋을 것 같다고

생각하였고 때문에 제가 요즘 제일 잘 사용하는 마켓컬리 애플리케이션을 분석해서

제가 느낀 불편한 점들을 개선해나가는 방향으로 가닥을 잡게 되었습니다.

(물론 특정 기업에 입사하기 위해서 만들기 보다는 다양한 기술을 적용해볼 수 있고,

제가 해당 어플리케이션을 사용하면서 느꼈던 불편한 점들을 개선해나간다는 점에서 의미가 있을 것 같아서

자주 사용하는 어플리케이션 중 마켓컬리를 포트폴리오 차용 대상으로 고려하게 되었습니다.)

마켓컬리 애플리케이션을 조사하는 과정에서 마켓컬리 어플리케이션이

네카라쿠배와 같은 서비스 회사처럼 플랫폼이 되는 애플리케이션을 직접 만드는 것이 아닌

SI 회사를 통해 제작되었음을 알게 되었습니다.

https://m.blog.naver.com/dndlab/221680568375

그래서 마켓컬리가 지향하고자 하는 개발 문화를 찾기는 어려웠지만,

유튜브나 구글, 안드로이드/코틀린 이슈들을 다루는 공식 홈페이지, 주변 개발자들의 조언들을 참고하여 포트폴리오를 만들고자 합니다.

제 포트폴리오는 client단인 안드로이드 어플리케이션과 server단인 REST API를 모두 만들 것입니다.

사실 안드로이드 개발자의 포트폴리오를 제작할 때 firebase를 활용하면 제작기간이 단축된다는 점에서

확실한 이점이 있다고 이야기 하실 분들이 있을 것 같습니다.

맞습니다.

제가 client와 server를 모두 다 만들게 되면 발생하는 어려움이 더 클 것입니다.

하지만 저는 안드로이드 개발자로 결정하기 전에 길지 않은 기간이지만 백엔드 개발자에 대해 공부하던 기간이 있어서

안드로이드만 공부했던 다른 분들보단 서버의 개발 방식을 알고 있어서 둘 다 해보고자 했던 것입니다.

또한 client developer인 안드로이드 개발자도 결국에는 서버에서 URI 방식으로 데이터를 가져오기 때문에

서버의 구조에 대한 이해가 필요하다고 생각하게 되었습니다.

또한 jsp나 php를 통해 데이터베이스에 접근하는 방식을 활용해서 애플리케이션을 제작하는 방식도 있다는 것을

학부시절 전공 수업 때 사용해본적이 있는데요.

그러한 방식을 채택하지 않은 것은 실무에서 잘 사용하지 않는 방식이라는 주변 안드로이드 개발자의 말을 듣게 되었고,

여러가지 정황을 고려해봤을 때 API 서버를 간단하게라도 만들어보는게

안드로이드 어플리케이션을 개발하면서 좋은 경험이 될 것 같다는 생각으로 도달하게 되었습니다.

지금도 포트폴리오 제작 과정에 있지만 제가 기반을 다져놓은 개발환경들이 흔하지 않아 참고자료가 적고,

짧은 주기마다 업데이트 되는 안드로이드와 코틀린 언어 특성상 업로드 되어있는 게시글들과 영상들이

저의 경우에 적용해봤을 때 사용할 수 없는 경우가 많아 애를 먹은 경우가 많은데요.

저의 개발 과정을 공유하면서 다른 분들에게도 도움이 되었으면 합니다.

본격적으로 포트폴리오 deliveryfood 제작시 발생했던 오류들과 해결방법들을 공유하기 앞서

제가 client/server를 제작하면서 사용하는 기술과 라이브러리, 개발툴들을 소개해드리도록 하겠습니다.

저는 서버단에서 kotlin, intellij, spring boot, gradle, git, mysql, jdbc, mvc2를 사용하고 있습니다.

클라이언트단에서는 kotlin, android studio, gradle, mvvm(live data + viewmodel), koin,

picasso, rxjava, rxkotlin, rxandroid, rxbinding, gson, retrofit2, room, git을 사용합니다.

제 게시글을 보기에 앞서 제 개발환경들을 보시고 본인에게 맞추어 변경하거나 추가하시는걸 권장드리며,

저 또한 아직 미숙한 실력이기 때문에 제 코드에 대한 조언이나 질문 주시면 감사하겠습니다!

다음 게시글부터는 저의 코드들을 공유하면서 오류를 해결한 방식들이나 불편한 점을 개선한 방향들로 돌아오겠습니다!

from http://log-of-development.tistory.com/17 by ccl(A) rewrite - 2021-11-16 12:00:45