Client Side Rendering 환경 고도화 if(kakao)2022 Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.
FE인프라TF 공통서버 개선 빠른 롤백 빠른 배포 Server Side Rendering 도입 서비스 가시성 증진 레포 단위 A/B 테스트 도입 서비스 성능 지표 수집 운영성 업무 개선 효율적이고 안정적인 서비스 운영을 위한 전반적인 FE 환경 개선 Open Graph 운영성 업무 FE 서비스 RC 배포
FE인프라TF 효율적이고 안정적인 서비스 운영을 위한 전반적인 FE 환경 개선 공통서버 개선 빠른 롤백 빠른 배포 Server Side Rendering 도입 Open Graph 운영성 업무 FE 서비스 RC 배포 서비스 가시성 증진 레포 단위 A/B 테스트 도입 서비스 성능 지표 수집 운영성 업무 개선 Client Side Rendering 환경 개선과 관련된 이야기
신규 투입 서버 Application Storage Ver A Application Storage Ver B 기존 구동 서버 User 개선 방향 도출 서비스 개발자들에게 과도한 마이그레이션 부담을 주지 않는 방식 서버 내부에 보관되던 산출물을 별도 공간으로 분리 물리 서버 기반의 공통 서버를
Kubernetes (K8s) Kubernetes Logo from kubernetes is licensed under the Creative Commons Attribution 4.0 International. - 컨테이너화된 애플리케이션의 관리를 도와주는 오픈소스 시스템
- 점진적 롤아웃을 통한 안정적인 무중단 배포 가능
- 간편한 Scaling 지원 -> 물리 서버 환경에서 Container 기반의 K8s 환경으로 변경 이슈1) 유연한 운영이 어려운 기존 프론트엔드 서비스 제공 환경
Kubernetes Logo from kubernetes is licensed under the Creative Commons Attribution 4.0 International. Kubernetes (K8s) - 컨테이너화된 애플리케이션의 관리를 도와주는 오픈소스 시스템
- 점진적 롤아웃을 통한 안정적인 무중단 배포 가능
- 간편한 Scaling 지원 -> 물리 서버 환경에서 Container 기반의 K8s 환경으로 변경 이슈1) 유연한 운영이 어려운 기존 프론트엔드 서비스 제공 환경 카카오페이는 Kubernetes를 적극적으로 사용 중 카카오페이의 K8s 운영 노하우 활용 가능 개발 편의성 운영 안정성
공통 Server 1 Application 배포 배포 배포 공통 Server 2 Application 공통 Server 3 Application 외부 Storage 서비스 A 서비스 B 서비스 C 조회 설정 변경 후 재배포만으로 마이그레이션 완료 서비스 개발자들에게 과도한 부담 없음
Yarn Berry (Yarn 2) - Node.js 환경에서 사용 가능한 Package Manager
- Node Module의 Plug'n'Play 지원
- 효율적인 의존성 관리
- 예측 가능한 의존성 사용
- 환경과 독립된 실행 환경 보장 Yarn Logo from yarnpkg/asset is licensed under the Creative Commons Attribution 4.0 International. -> Yarn Berry (Yarn 2) 도입 이슈2.1) 프론트엔드 서비스 배포에 오랜 시간이 소요됨
이슈3) 퍼블릭 오픈 전 기능 최종 확인 수단의 부재 -> 사용자 계정 기반의 Release Candidate 배포 환경 구성 일반 사용자 서비스 산출물 Release Candidate 사내 사용자 여부 확인 구분된 산출물 제공 사내 사용자 대상 "최종 실환경 검증" 사내 사용자 공통 서버
FE 공통 서버 치아보험 운전자보험 자동차보험 암보험 내 대출한도 신용 조회 보험 서비스 대출 서비스 -> 서비스마다 하나의 Open Graph 정의 가능 서비스마다 하나의 index.html 존재 Client Side Rendering 환경에서의 Open Graph 운영은 어렵습니다.
신용 조회 치아보험 FE 공통 서버 운전자보험 자동차보험 암보험 내 대출한도 보험 서비스 대출 서비스 -> Open Graph로 최대한 리치한 정보 제공 페이지마다 다른 Open Graph 적용 필요 Client Side Rendering 환경에서의 Open Graph 운영은 어렵습니다.
이슈4) 외부 트래픽을 전이시키기 위한 운영성 개발업무 존재 - IS> - Open Graph를 포함한 Static HTML 페이지를 만들어서 배포
- Static HTML 페이지에 사용자 접속 시 원래 서비스 페이지로 Redirect 사용자 Crawler FE 공통 서버 Static Page -> 경로별 Open Graph 설정 가능하게끔 변경 Open Graph 확인 Static Page 열람 공통 서버로 Redirect
이슈4) 외부 트래픽을 전이시키기 위한 운영성 개발업무 존재 - IS> - Open Graph를 포함한 Static HTML 페이지를 만들어서 배포
- Static HTML 페이지에 사용자 접속 시 원래 서비스 페이지로 Redirect 사용자 Crawler FE 공통 서버 -> 경로별 Open Graph 설정 가능하게끔 변경 Open Graph 확인 Static Page 열람 공통 서버로 Redirect 필요 시마다 Static Page 생성 작업 필요 Static Page
마무리 (Wrap Up) - 프론트엔드 서비스 제공 환경의 유연한 운영이 어려움 - 레거시 환경을 Container 기반 K8s 환경으로 이관하여 유연한 서버 관리 가능 - 배포 · 롤백에 오랜 시간 소요 - Yarn Berry 도입 및 롤백 전략 수립으로 배포 · 롤백 시간 대폭 단축 - 퍼블릭 오픈 전 기능 최종 확인 수단의 부재 - 계정 기반의 RC 배포 환경 도입으로 퍼블릭 오픈 전 추가 검증 레이어 확보 - 외부 트래픽을 전이시키기 위한 운영성 개발업무 존재 - 경로별 Open Graph 관리 시스템 구축으로 유연한 Open Graph 운영 가능