개발 요약
- 총 2인 개발 중 백엔드 개발 담당
- 관심 블로그 크롤링 / BackOffice 페이지 편의성 기능 / 에러 관리
Stack
- OS : Amazon Linux, Ubuntu 14.04 (using AWS EC2)
- Language : Ruby, Javascript
- Framework : Rails
- DBMS : Mysql (using AWS RDS)
주요 개발사항
- 블로그 크롤러
- 25분만에 약 11만개의 학원 블로그 크롤링
- 대상 블로그 업데이트 유무 판단
- 기존에 작성한 포스팅과 중복 여부 판단(홍보용 포스팅 제거)
- 제목, 태그 등을 통해 관심 없는 포스팅 제외
- BackOffice
- 관리자 페이지 커스터마이징(기존에는 rails admin 라이브러리 이용) 및 주소 검색 api 연동
- 네이버 지도 검색 및 파싱 자동화(Chrome headless, Selenium) -> BackOffice 연동
- Slack webhook 연동으로 DAU, WAU, MAU 및 조회수 확인 기능
- 050 api 연동, 안심번호 자동 매칭 기능 추가
- 기타
- Error Tracking, Notification 툴 도입(RollBar)
- Jira 로 Issue 관리 담당, 에러 핸들링 매뉴얼 작성
- CI/CD 툴을 이용한 기본 개발환경 구축 매뉴얼 작성
기타 사항
- 입사 당시 개발팀이 혼자였기 때문에 많은 시행착오를 겪으면서 개발을 했다.
- 크롤러 개발 중에 서버 과부하로 인해 서버를 꺼트린(…) 경험이 있다.
- 현재는 node.js 기반으로 변경하였으나, 크롤러는 여전히 내가 만든 것을 사용 중.
배운 것들
- 문서화의 중요성 : 개발 당시 기존 프로젝트를 리뉴얼하는 과정이었기 때문에, 정말 오래전에 만들어진 버전 이후로는 문서화가 제대로 되어있지 않아 고생을 꽤 많이 했다. Readme를 통해 한 눈에 알 수 있는 Model Spec 정의 및 Controller 기능 정의 등이 반드시 필요하고 아무리 급해도 클래스 다이어그램, 시스템 흐름도 정도는 꼭 만들어두어야 한다는 것을 깨달았다.
- 단위 Test Code 작성의 중요성 : 단위 Test Code를 꼭 작성해야 빠르게 문제 해결이 가능하다는 것을 알았다. 코드를 수정할 때마다 전체 프로그램을 돌리는 것 만큼 어리석은 짓은 없다.
- Rails asset pipeline에 대한 이해 : 수많은 image와 markup, javascript를 이용하는 실무에서 Framework가 정적인 asset을 어떻게 처리하는지에 대한 이해는 굉장히 중요하다는 것을 느꼈다.
- AWS의 실무활용 : 서비스중인 서버를 터트려가면서 몸소 터득한 AWS 활용 방법. VPC를 구성하고 서비스들을 내가 그린 그림대로 구성할 줄 알게 되었다.
번외
일 하게된 계기
한창 멋쟁이 사자처럼 6기 운영진 활동을 하던 중, 멋사 출신 기업인 강남엄마에서 채용 공고를 냈다. 한창, 스타트업만이 가능한 시장구조 변화를 꿈꾸고있던 차에 실무 경험도 쌓을 겸 지원해보았다.
첫 면접에서는 풀타임으로 일할 수 없다는 조건때문에 그냥 돌아오게 되었지만, 대표님이 계속 같이해보고 싶다는 생각이 드셨다고 한다.(기분 좋으라고 한 말이겠지만)
연락을 받고 다시 면접을 보고 기술면접 후 채용이 되어 학기중 파트타임 직원으로 시작하여 방학 풀타임 개발을 뛰게되었다.
느낀 점
- 주니어는 무조건 많이 배울 수 있고, 일을 많이 할 수 있는 곳으로 가야한다. 그래야 실력이 늘 것 같다.
- 크롤러를 개발하면서 최적화된 알고리즘 작성에 대한 필요성을 절실하게 느꼈다.