2018.12 ~ 2020.11 파비(총 9명) ▶ 개발팀장(연구소장)
[담당업무] 개발팀 총괄(사업성 검토, 업무분장, 선행 기술연구, 일정 조율),
RTB-DSP 개발
[개발 플랫폼] 앱 - AOS(Android Studio, Java, Kotlin), iOS(Xcode, Swift)
Server - Nodejs, Spring Boot, MySQL, AWS, 사내 서버 구축
RTB - Java Server(ZeroMQ, memDB, Cache2k, Jetty, Socket I/O),
Kafka, ELK, Haproxy, Docker (Kubernetes), Ruby, Mysql
Web - Wordpress(Apache, PHP, MySQL) 커스터마이징
기타 - Git, Trello, Slack, Office 365
[개발 툴] Eclipse, Android Studio, Xcode, Visual Studio Code, Source Tree(GIT),
BeyondCompare
[상세담당업무]
1. Wordpress를 활용한 웹페이지 개발
기간 : 2020.02~2020.03, 2020.07~2020.11
역할 : Wordpress 커스터마이징
- Ubuntu에 Wordpress 환경셋팅(Apache, PHP, MySQL)
- UI 변경, 기능 추가
- 속도개선(DB 쿼리 튜닝, UI 최적화)
- MySQL, Image(AWS S3로 이동) 분리
- 웹페이지 3개 제작( fun.pabii.co.kr, news.pabii.co.kr, review.pabii.co.kr )
- 기타 뉴스 페이지 제작(wikiilbo.com, easyilbo.com, jirasi.com)
- Google SEO 최적화(index/noindex, CLS)
- AWS 셋팅(Route 53, ELB, ACM, EC2, VPC, S3, CF)
- 사내 서버 구축(공유기 1대, Haproxy 1대, DB 1대, 웹 서버 3대, 모니터링(grapana) 서버 1대, 전력 배터리)
2. RTB(Real Time Bidding) - DSP(Demand Side Platform) 개발
기간 : 2019.07 ~ 2019.12, 2020.04 ~ 2020.06
역할 : RTB4Free 분석 및 시스템 아키텍쳐 설계
- RTB4Free 핵심 엔진 분석(Bidder, Zerospike, Crosstalk)
관련 오픈소스(ZeroMQ, memDB, Cache2k, Jetty, Google protocol buffer), Java 언어 사용.
- RTB4Free 주위 엔진 분석(Hapoxy, Kafka, ELK, Ruby on Rails, Mysql)
- OpenRTB 2.5 – bid/win/pixel/click protocol 파악
- Docker-compose 구성
3. 앱 개발 - Some
기간 : 2019.02 ~ 2019.06
역할 : Spring boot server 개발
- 회원가입, 로그인, 인증(JWT), 유저 관리/신고/제한
- 추천 사용자, 사용자 검색, 팔로우(찜/썸) 관리
- Post 관리, Image 관리(썸네일 처리, 여러장 업로드)
- 채팅 요청/승락/거절, 환불요청/승락, 분쟁조정, 머니 중계 시스템
4. 개발 팀장(연구소장)
기간 : 2019.02 ~ 2020.08
역할 : 사업성 검토, 업무 분장, 선행 기술연구, 일정 조율
[총평]
1. 개발 팀장(연구소장) 경험.
회사 첫 합류는 앱(AOS, iOS) 싸이트 팀장으로 합류 했습니다. 당시에는 CTO분이 따로 있었고요. 중간에 CTO 분이 능력이 안된다고 판단되어서 나가게 되었고, 그 자리를 제가 맞게 되면서 회사 전반의 개발팀장(연구소장)을 하게 되었습니다.
개발의 모든 분야(Client, Server, Web Front, Web Server, Infra)의 개발 리딩 해볼 수 있는 기회 였습니다. 특히 Web 쪽은 지식이 부족하여 많은 공부가 필요 했습니다. 지금까지 한 분야를 고집 하지 않고 여러 분야에 관심을 가져오며 공부해온 세월 때문에 가능했던 일인 듯 싶습니다.
개발 모든 파트에 참여해 개발을 해볼 수 있어 좋았고, 사업전반에 참여하는 느낌이 들어서 좋았습니다.
동시에 여러 파트 리딩을 하다 보니, 한 파트의 숙련도가 이전보다 못 올라가는 느낌이 아쉬웠습니다.
2. RTB(Real Time Bidding) – DSP(Demand Side Platform) 도전
도전 목표 : 수백만 QPS(Query Per Second), 한 request당 응답속도 70ms
https 프로토콜을 사용해서 위 2가지 요구사항을 맞추어야 하는 도전 이였습니다.
회사에 담당자가 따로 있었지만, 능력이 안되어서 해고 당하고, 해보겠냐는 제안에 처음에는 너무 무모해 보여서 하기 싫다고 했습니다. 하지만 할 수 있는 사람 구인은 불가능해 보이고 호기심도 생겨서 도전하게 되었습니다.
정말로 많은 공부를 해야 했고, 많은 테스트를 해야 했습니다.
먼저 오픈소스를 찾아보니 RTB4Free라는 Java로 만들어진 오픈소스를 찾을 수 있었습니다. 성능은 AWS C4xlarge 1대에서 5000 QPS라 그리 좋지 않은 성능 이였지만(상대적으로 C 계열의 오픈소스가 성능이 더 좋았습니다), Kafka, ELK를 활용한 자체 로깅 시스템도 구성되어 있고, 자체 Campaign Manager를 가지고 있고, Bidder를 무한으로 늘릴 수 있는 구조를 가지고 있어서 선택 하게 되었습니다.
하지만 문서상 잘 동작할 것 같은 소스가 실제 동작 시켜보면 숨겨진 버그 들이 많아 버그를 수정해야만 했고, 주의 기술 스텍(Docker, Kafka, ELK, Haproxy, Ruby) 을 몰라 사용할 수 있는 수준으로 빠르게 공부를 해야만 했습니다. RTB4Free 자체 소스도 Docker를 활용한 분산처리가 될 수 있는 구조를 분석하기 위해 많은 시간을 소요해야 했습니다.
어느정도 준비가 된 후 테스트 배드부터 만들기 시작했습니다. 2.5Gbps 네트워크망을 구성했고, 60개의 Tester를 준비해 15000이상의 QPS request를 보낼 수 있게 만들고, 3대의 bidder에서 각 5000 QPS 를 버틸 수 있게 구성을 했고, Kafka, ELK를 통해 실시간 로깅을 하면서 실시간 로깅에 따라 bidding을 조절(CPU 과부시 휴식, 1분 초과 bidding시 휴식) 되는걸 확인 했습니다.
테스트 배드까지 준비된 상태로 본격적으로 타켓팅 알고리즘 개발 준비가 되었지만, 구글 DSP 계정을 생성할 수 없는 상태였고, 광고주를 구할 방법을 찾을 수 없는 상태여서 개발을 홀딩 하게 되었습니다.
서버 기술스텍의 최정점의 기술들을 공부할 수 있는 좋은 기회였다고 생각합니다. 라이브를 못해보고 개발이 홀딩 되어 아쉽습니다.
3. 아쉬운 사업 실패
개발+디자인 으로 구성된 팀으로 열심히 개발해 채팅앱, 여성의류홍보앱, 유머앱을 만들게 되었습니다. 기획, 운영 노하우가 없는 상태에서 앱만 만들었을 뿐 유저를 못 모으고 앱을 종료하게 되었습니다.
3번의 실패 후 Wordpress를 활용해서 2개월만에( 유머앱의 자료를 바탕으로) 유머 커뮤니티 싸이트를 제작하게 되었고, Wordpress의 Yoast 플러그인의 힘을 얻어 대부분의 페이지 들이 Google 검색(SEO) 페이지에 1번으로 노출 되면서 4개월만에 MAU 30만. 광고 매출 하루 100만원 까지 성장하게 되었습니다.
하지만, 갑자기 구글 검색(SEO) 노출 제한을 받게 되면서 하루 아침에 모든 페이지가 구글 검색에 노출 안되게 되었습니다. 이후 Thin Contents는 모두 noIndex하고, CLS(Cumulative Layout Shift)을 맞추면서 다시 구글 검색에 노출 되었지만, 이전처럼 Google 검색(SEO) 노출이 1번으로 안되어서 사업을 접게 되었습니다.
3번의 실패 이후 1번의 성공으로 손익분기점(BEP)을 맞출 수 있는 상태에서 하루 아침에 사업을 접게 되어 많이 아쉽습니다.
더보기