최제필 Jepil choi
G: https://github.com/owen1025 / E: myartame@gmail.com / T: +82-10-2612-1052
OVERVIEW
- 문서화를 가장 중요하게 생각합니다.
- 정답인 아키텍처는 없다고 생각합니다. 서비스와 조직에 맞는 최선의 아키텍처만 있다고 생각합니다.
EMPLOYMENT
Terraform Labs
Lead DevOps engineer / 2018.09 ~
Payment service 운영을 위한 NCP Hybrid zone과 사내 IDC 환경의 Container / On-premise 인프라 설계, 구축 및 운영 전담
Note: 아래 내용의 이해도와 가독성을 위해 NCP Hybrid zone(production): PZ / 사내 IDC(ecosystem / staging): EZ로 표기합니다.
- Container orchestration: Docker swarm(multi master-worker node, PZ/EZ)
- iso 27001 인증을 위한 인프라 환경의 네트워크 이중화 / Cent OS, PostgreSQL, Docker 보안 점검 대응 / Firewall rule / Etc 대응
- (EZ) IPSec VPN + DNS(named) + Traefik + Consul + Registrator 환경을 구성하여 Container 기반의 management system(Kibana, Portainer, etc...) 접근 제어
- Vault(PZ/EZ): SSH OTP, PostgreSQL dynamic credential, Service container 내에 사용될 orm config, 생체 정보 key-value data에 관해 암호화 및 사용을 위해 Batch / service token 발급 및 관리
- Database system(On-premise)
- DBMS(PostgreSQL)
- In-memory store(Redis)
- Redis active-stand by 구축
- Redis + Redis sentinel 구성으로 자동 장애 대응
- Ecosystem
- Linux host / Container / On-premise 환경의 통합 모니터링을 위한 ELK Stack 구축
- Elasticsearch Cluster 구성: JVM option, index field data caching(sorting 성능 개선), curcuit breaker(OOM 방지), index lifecycle management(ILM) 적용
- Logstash: filebeat 등 수집기에서 보낸 data 가공 및 정제
- Kibana: Log, metric, apm 및 Payment 정보에 대한 Dashboard 시각화
- Filebeat: Linux host의 sys, audit, daemon log / container log 수집 및 전송
- Metricbeat: Linux host 및 Container의 CPU, RAM, Disk IO 등 metric 수집 및 전송
- Elastic APM: Service container 내에 apm-agent에서 application performance, transaction 및 사용자의 행동 패턴을 key-value 형태로 Elastic APM server에 전송
- Heartbeat: On-premise, Container service의 Health check 및 Kibana Uptime 연동
- CI/CD 환경 구축(EZ)
- Jenkins master-slave 구성
- 각 서비스 Git repo의 Push, PR 등의 event 발생 시 Jenkinsfile을 읽어와 Pipeline 실행
- Pipeline에서 build / push 진행 전 Unit test를 통과해야 build가 수행되며 develop, staging branch인 경우 EZ에 자동 배포 진행, master는 E2E test 및 부하 테스트를 통과해야만 배포 가능 설정
- Jenkins agent의 label을 설정하여 특정 agent에서 Docker image 및 Flutter의 iOS / Android build 진행
- Ngrinder Controller-agent 구성
- master에 배포 전 staging(EZ) 환경에서 결제 시나리오에 대한 부하 테스트 진행
- Login, session, cookie 등 실 사용자의 시나리오에 맞게 groovy script 작성
- Jenkins master-slave 구성
- Sentry(error tracker) 구축
- MSA로 구성된 service container에서 발생하는 error tracking 시스템
- Sentry web, cron, worker, postgresql, redis
- Alert: Elasticsearch Watcher + Pagerduty
- Heartbeat indice의 health check fail(= Service down), Filebeat indice의 fatal / error log 발생 시, Metricbeat indice의 On-premise, container 사용량이 특정 범위 초과 시, Elastic APM indice의 transaction의 response time이 특정 범위 초과 시, Sentry에서 error tracking event 발생 시 Pagerduty에 triggering하여 Slack, SMS, Phone call로 알람 발생 및 서비스 장애에 대한 대응과 이슈에 대해 로깅 및 공유 진행
- Linux host / Container / On-premise 환경의 통합 모니터링을 위한 ELK Stack 구축
Fooding
(SI) DevOps engineer
- 운영, 개발 인프라 구축 전담
- Container orchestration: Docker, ECS, EC2, ECR
- 웹서버 (NginX), WAS (Node.js, HTTP)
- 데이터베이스 (MySQL, RDS)
- 트래픽 로드 밸런싱 (ALB, Route53)
- CI/CD (Codepipeline, Codebuild, Github webhook)
- 무중단(Blue-green) 배포
- 모니터링 (Cloud watch)
- API 개발 전담
- Node.js, Express, Knexjs, MySQL
- 인증/인가 서비스 (JWT, AWS Lambda, API Gateway)
- 메인(사용자) 서비스
- 어드민(관리자, CMS) 서비스
- 푸쉬(이메일, SMS) 서비스
- HTML 기반의 PDF(세금계산서, 견적서 등) 렌더링 서비스
AJ Networks
DevOps engineer / 2016.05 ~ 2018.07
- 차세대 ERP 시스템 인프라 설계, 구축 프로젝트 참여
- IDC 기반의 DC/OS를 활용한 운영, 개발 인프라 구축 참여
- IDC 마이그레이션, 컨테이너 오케스트레이션, 웹서버, WAS, 모니터링(로그, 메트릭, 퍼포먼스) 등
- CI/CD 파이프라인 구축 및 운영 전담
- 부하 테스트 환경 구축 및 운영 전담
- IDC 기반의 DC/OS를 활용한 운영, 개발 인프라 구축 참여
- 데이터베이스 메타데이터 관리 도구 개발 전담
- ERP 시스템에서 사용될 메타데이터 관리 도구
- 단어, 용어, 도메인
- 프로젝트(UI, API) 개발 전담
- UI(HTML5, Materialize(+LESS), Vue.js, jQuery, EJS
- API(Node.js, Express, Knexjs, MySQL(Percona))
- ERP 시스템에서 사용될 메타데이터 관리 도구
Pikicast
Software engineer / 2014.07 ~ 2015.01
- 피키캐스트 웹서비스 메이저 업데이트(2.0)
- API 개발 전담 및 기획 참여
- PHP, Codeigniter, MySQL
- 피키캐스트 웹서비스(1.0) 유지보수 참여
- UI 유지보수 전담
- HTML5, CSS, jQuery
Add2Paper
Software engineer / 2013.12 ~ 2014.07
- 프린트 드라이버 및 클라이언트 유지보수
- 안드로이드 클라이언트 유지보수
ACTIVITIES
DevOps 구축 BOOTCAMP 강사
Fastcampus- AWS, Docker를 활용한 인프라 구성 방법 강의 진행
- 1~5기 진행
Codeigniter-apidocs
- 오픈소스 프로젝트 전담
- Codeigniter로 기 개발 된 프로젝트의 컨트롤러를 분석하여 자동으로 API 테스팅 문서(응답/요청)를 작성.
- 핵심 모듈 (PHP, Codeigniter) 개발
Zio Ball
- 2D 모바일 퍼즐 게임
- iOS / Android 스토어 100만 다운로드 기록
- 프로젝트(클라이언트) 개발, 기획 책임
- Corona SDK Lua script 사용