서비스 : 모바일(안드로이드/iOS) 성능분석 모니터링 솔루션(Mobile Performance Monitoring, 제니퍼 모바일 버전)
사용 스킬 : node.js, MySQL, Android, BCI(Bytecode Instrument), nginx, rabbitMQ, redis, javascript
관여한 핵심기술
안드로이드 모바일 성능분석 SDK 개발
HTTP, XHR(Ajax) 성능 정보 선별 수집 제한 기능 개발
ANR 타임아웃 설정 기능 개발
OS 버전 별 SDK ON/OFF 기능 개발
RxFragment 렌더링 정보 수집 기능 개발
BCI를 이용한 화면 정보 수집 코드 삽입 자동화 기능 개발 및 버그 수정
Volley HTTP 응답속도 정보 수집기능 개발
2. 웹뷰 성능 분석 Agent 개발
HTTP, XHR(Ajax) 성능 정보 선별 수집 기능 개발
3. 성능정보 수집 서버 개발
SDK ON/OFF 기능 버그 개발 및 유지보수
데이터 전처리 기능(개발 중)
4. 솔루션 버그 수정
웹뷰 성능 정보 수집 버그 수정
애플리케이션 사용자 행동분석 기능 버그 수정
성능 분석 수집 서버 버그 수정
5. Non-Root 기반 솔루션 재 구성
OS별(CentOS6,7 Ubuntu 16.04, 18.04)로 인프라 커스텀 컴파일
haproxy, nginx, node.js, pm2 컴파일
프로젝트 수행시 경험한 것
대규모 트래픽(TPS 200 이상)에 대한 경험
MSA 아키텍처 기반의 서비스에 대해 장애대응 및 개발 경험을 해 볼 수 있었음.
CQRS 패턴, 메시지 패싱, Shared Database 패턴을 경험
메시지 큐 기반의 서비스를 경험해볼 수 있었음
다양한 형태의 데이터 구조를 RDB에 저장하는 방법을 배울 수 있었음(트리, 그래프, 성능정보)
회사 솔루션을 분석하면서 BCI(Java Bytecode Instrument)에 대해 학습 할 수 있었음
프로젝트 수행시 느낀 점
솔루션 제작시에, 다른 솔루션들 사이에서도 호환이 잘되게 만들어야 한다는 사실을 깨달음
On-Premise 솔루션에는 MSA 아키텍처가 적합하지 않다는 사실을 깨달음
실제 상용 제품을 만들때는, 관리포인트를 최대한 줄이는게 핵심이라는 사실을 깨달음
그래프나 트리 형태의 자료구조는 RDB에 저장하기 부적절한 구조라는 사실을 깨달음
대규모 데이터나 예상하지 못한 데이터에 대해서, 예외 처리를 고려한 코드를 작성해야 한다는 사실을 깨달음
장애 발생시, Tracking이나 Logging이 가능한 구조를 고려해야 한다는 사실을 깨달음
더보기