코드스테이츠에서 진행하는 첫번째 프로젝트가 끝나고 5월 11일 부터 마지막 프로젝트인 final project가 시작되었습니다. 파이널프로젝트는 퍼스트프로젝트와 같이 팀원들과 서비스를 제작할 수도 있고 기업과 협업을 할 수도 있습니다.
저는 서비스보다는 기업협업을 해볼 수 있는 기회라고 생각해서 기업협업을 신청했고, 운이 좋게도(?) 기회를 잡을 수 있었습니다. 협업을 하는 기업들은 프로젝트에 대해서 간단한 소개를 해주는데 이번 기업은 백엔드 위주로 프로젝트를 진행할 계획이어서 그런지 지원자가 적어서 제가 뽑힐 수 있었지 않나 생각해봅니다. 현재까지는 매우 흥미롭게 진행되고 있습니다. 팀원끼리 상의해서 원하는 기능을 제의하여 통과한다면 저희가 만든 기능을 사이트에 넣을 수도 있다고 하셔서 팀원들끼리 열심히 얘기도 나누면서 고민하고 기능 구현에 적절한 스택을 선정해보고 그에 따른 공부를 하면서 팀원들끼리 좀 더 열심히 공부할 수 있게 되는 것 같습니다.
현재까지는 node js를 사용해서 특정 사이트에 대한 비동기 처리 작업을 진행하였고, 기업에 제출하였습니다. 이 과정에서 async, await를 해결하기 위해 promise.all을 사용해보기도 하였고, puppeteer를 사용해보기도 했습니다. 결론은 promise.all을 활용할 수 있다면 많은 페이지를 로딩하는데 시간이 단축된다는 것을 알았고, puppeteer는 결과는 잘 나올지라도 결과를 내는 속도가 너무나도 느려서 체감 상으로 정말 무겁게 느꼈습니다. promise.all과 puppeteer는 추후에 글을 작성할 계획입니다.
기업 쪽에서 피드백을 받았고 다음주부터는 기업 내부의 저희가 접근 가능한 범위 안에서 서버관련 작업을 진행할 것 같습니다. 새로 만드는 부분이 있을 수 있기 때문에 주말을 포함하여 타입을 컴파일 전에 설정하여 초기작업에 설정 값을 수정할 수 있는 타입스크립트를 활용한 리액트를 공부하고 있고, 다음주에 토큰 처리와 몽고db를 위주로 복습하려 합니다.
개인으로는 할 수 없는 기업과의 협업이다보니까 코드를 작성할 때도 다시 한번 확인하게 되고 기업에서 기능 확장을 위한 프로젝트이기 때문에 전반적인 프로젝트의 진행 방식을 알 수 있어서 매우 좋은 경험이라고 생각합니다. 이를 열심히 작성해놨다가 제가 나중에 프로젝트를 진행할 때에도 이와 비슷한 방식으로 진행할 수 있으면 좋겠습니다.
이번주는 기업의 관리자 페이지의 회원관리 페이지와 스토어 관리페이지를 추가하는 작업을 진행했습니다. 이전에 만들어져 있던 어드민 페이지는 파이썬으로 작성되어 있었는데, 기업에서 리팩토링을 위해 jQuery와 node로 새로운 관리자 페이지를 만들다가 중단하신 코드를 받아서 이어서 작업을 했습니다.
기존의 틀은 만들어져 있어서 회원관리와 스토어관리 라우팅과 기능만 작성하면 되는 작업이어서 상당히 편하게 작업할 수 있었습니다. jQuery는 처음 사용해보는 언어여서 초반에는 난해했는데 작성되어있던 코드를 분석해보니 금방 응용할 수 있었습니다.
처음에는 db에서 불러온 데이터를 반복문으로 나열하는 방식으로 작성했었습니다. 하지만 회원정보가 2만개가 넘었기에 로딩 속도가 너무 느렸고, 조회할 때마다 데이터를 새로 로딩한다면 속도가 엄청 느릴거 같았기에 검색 조회를 위해서는 ajax를 사용해야겠다는 생각을했습니다. 그래서 jQuery의 dataTable을 사용하여 몽고디비에 있는 데이터를 ajax로 불러와 페이지네이션을 하고 닉네임, 날짜 회원종류 등등 여러 조건에 따른 검색조회기능을 추가했습니다.
아쉬웠던 점은 jQuery를 처음 사용해봤기도 하고, 기존에 작성되어 있던 코드들이 여러 플러그인들을 활용하여 코드가 작성되어 있었습니다. 플러그인을 사용하지 않고 기능 구현을 하고 싶었지만, 기능을 추가하기 위해 새로운 공부를 하는 시간이 생각보다 길어졌고, 파이널 프로젝트 기간이 일주일 밖에 남지 않았기에 팀원들끼리 회의를 거쳐 기존의 방식을 따르기로 결정했습니다.
소감으로는 adminLTE, jQuery-ui, bootstrap 등을 사용했는데 클래스명만 작성해주면 css와 기능이 자동으로 구현되고 구현 속도가 정말 빨라서 정말 놀랐습니다. 하지만 저의 성장에는 좋지 않다고 생각했기에 프로젝트가 끝나면 페이지네이션 기능과 검색조회기능을 만들어볼 계획입니다.