수인약품 개발일지 1차
1. 시작
먼저 앞서 나는 안드로이드 앱으로 수인약품 어플을 만든 전적이 있다. 구글 플레이 스토어 정책에 대해서 무지했기 때문에, 약품이 조금이라도 관련되면 일체 스토어에 올릴 수 없다는 이야기를 다 만들고서야 알게 되었다. 고생해서 만들었기 때문에 올리기 위해서 여러번 문의를 넣었지만 불가능했다.
그래서 다른 쇼핑몰처럼 웹페이지를 만들어달라는 요청사항을 받았다. 웹에 대해서는 전역 직후에 교내 동아리 활동을 하면서 SpringMVC로 했었고, 리액트 네이티브로 만든 학교 어플에 유지보수를 돕는 일을 했던 전적이 있었다. 추가적으로 이후에 vuejs와 react를 공부했고, 후반기에는 대외동아리에서 react와 django를 이용한 웹 서비스를 만든 경험이 있다. 이제 이를 토대로 쇼핑몰을 기획하고 있다.
2. 팀
같은 학교 동문 친구들로 구성했다. 2명인데, 1명은 동기(앞으로 ‘추’라고 명명할 것임), 나머지는 후배인데 동갑이다.(‘준’이라고 명명)
이 두 친구들은 웹에 대한 경험은 거의 없지만, 습득력이 매우매우 좋다. 가르쳐주면 바로바로 알아듣고 적용할 줄 안다. 커리큘럼을 잡아주면 무조건 잘할 친구들이라고 판단되었다. 애초에 필자보다 훌륭한 친구들이다.
3. 계획
일단 본인은 지도 위주로 가르쳐줄 예정이다.
1) 프론트
Typescript React (Functional Style) MobX Nextjs
2) 백
Spring Boot JAVA JPA (구현체 Hibernate) QueryDSL Spring Data JPA MySQL
3) 서버
AWS (Lightsail 혹은 ec2, s3) ubuntu jenkins travis docker
‘추’친구는 직무를 프론트로 생각하고 있기 때문에 리액트를 프론트 스택으로 선택했다. 물론 내가 리액트에 대한 경험이 있기 때문인 것도 있지만, vuejs의 경우에는 굉장히 쉽고 react를 제대로 할줄 아는 실력이라면 vue는 전혀 문제가 없을 것이라고 판단했기 때문이다. 그리고 ‘추’친구는 리액트를 못 알아들을 수준의 친구가 아니다.
‘준’친구는 프론트와 백을 만지게 될텐데 백을 하기 위해서는 프론트를 알아야한다. 프론트를 모르고 백을 한다는 것은 마치 숫가락 놔두고 손으로 국 떠먹는 느낌(?)이기 때문이다.
JPA는 구현체로 Hibernate를 이용하려고 한다. 레퍼런스가 가장 많기도 하고 가장 일반적으로 많이 쓰는 것 같다. JPA의 원리를 이해하고 Spring Data JPA 사용한다면 정확하게 이해하고 사용할 수 있을 것이다. 애초에 Spring Data JPA가 유틸리티성으로 JPA를 편하게 사용하려는 것이기 때문에 JPA를 먼저 알아야 된다고 본다. 특히 성능 문제가 가장 많이 할 수 있는 fetch나 lazy loading 등은 모르면 안된다.
ec2가 아닌 lightsail 중에 고민 중인데, 아마 lightsail을 사용할 것 같다. 완성되면 쭉 운영되고 유지보수 될텐데 가격면에서는 lightsail이 낫고 본다. 어차피 개발을 위해서 운영하는 인스턴스는 그리 가격이 높지 않으니 괜찮다.
배포 자동화나 이런 부분은 내가 가장 관심이 많은 쪽이기도 한데 필자도 아직 공부를 제대로 안했다. 정확하게 이야기할 수는 없지만, 일단 jenkins travis를 사용할 예정이다.
4 커리큘럼
먼저 javascript를 공부할 수 있는 자료를 줬고, 마치고 나면 React부터 마스터하게할 생각이다. 프론트건 백이건 둘 다 프론트를 제대로 알아야한다. React의 경우에는 처음에 하면 생소한 개념 때문에 어려워할 수 있다는 가정하에
를 듣게 했다. 생활코딩 강의를 모두 듣고 나면
를 공부하게 할 것이다. 모두 공부하고 나면 생활코딩에서 배웠던 javascript 버전의 app을 typescript로 변환해 보는 과정을 공부할 것이다. 이 과정에서는 구글링을 많이 해야할 것이다. 그리고 나면
에서 Functional 스타일로 작성하는 무료 강좌를 볼 생각이다. 그리고 리액트에 대해서 충분히 공부가 되면 각자 토이프로젝트를 진행한 후에 어느 정도 익숙해진다면 ‘추’친구는 MobX와 여러가지 css를 다루는 방법에 대해서 공부하게 할 생각이다. ‘준’ 친구는 백을 공부하게 될 것이다. 백 커리큘럼은 아직 고민중이다.
이 친구들은 내가 겪었던 시행착오를 덜 겪게 하고 싶다. 시행착오가 나쁜 것은 아니다. 하지만 시행 착오를 했을 때 돌아오는 시간과 에너지 비용을 고려했을 때, 지름길을 알려주는 것이 어쩌면 좀 더 효율적인 방법이 될 수 있을 것이라고 본다.