2022 WONIZZ.LOG
안녕하세요? 정리하는 개발자 워니즈입니다. 2022년을 마무리 하는 마지막 날입니다. 지난 1년을 돌아보며, 제가 어떤 기록들을 남겼는지 그리고 어떻게 성장했는지를 확인하기 위해 매년 마지막에 글을 작성하고 있습니다.
지난 1년을 하나의 키워드로 남겨보면, 다사다난이였던 것 같습니다. 개인적으로 힘든 시기도, 성장이 되는 시기였던 것 같습니다. 차근차근 돌아보며 어떤것들을 했는지를 정리해보겠습니다.
1. 2022년에 목표 한 것은 다 이루었나요?
- 블로그 연간 30000명 돌파하기
- 블로그 한달에 한편 포스팅하기
- 개인적인 취미 갖기
개인적으로 2022년에는 회사의 업무가 바쁘게 흘러가다 보니까, 저만의 시간을 보내기가 너무 어려운 해였던 것 같습니다. 그래도 블로그의 글을 1달에 1편이라도 작성하는 것을 목표로했었고, 지금까지 총 16편의 포스팅을 작성했으며, 어떠한것은 필자가 속한 업무에 직접적으로 적용하여 개선을 한 사례들도 있고, 개인적으로 블로그를 운영하면서 기록했던 내용들도 있습니다.
1-1. Blog 운영 결산 ✍
블로그를 운영하면서 여러가지 고난과 시련(AWS 비용폭탄, 도메인 만료로 인한 블로그 중단 등)들이 있었습니다. 하지만 하나씩 극복을 해나가면서 블로그를 5년동안 유지중에 있으며, 비용은 거의 0원에 가깝게 유지를 하고 있습니다.
구글의 애드센스 광고를 붙인지는 2년정도의 시점이 되어가고있고, 이제서야 어느정도 비용을 받을 시점이 오게 됐습니다. (참고로 100$이 넘어야 비용을 최초로 받을 수 있습니다. 이정도의 투입대비 결과로는 아르바이트 수준도 안되지만 개인적으로는 취미 생활을 하면서도 용돈도 벌수있다는 긍정적(?)인 생각을 하고 있습니다.)
30000명의 사용자를 목표로했지만, 작년대비 600명이 더 늘어났을 뿐, 아쉽게도 목표치를 이루지 못했습니다. 10월즈음에는 블로그의 도메인이 만료 되는 일이 있어, 위의 이미지에서 보듯이 10월달에 급격하게 유저수가 줄어들었다가 다시 회복세를 보이고 있습니다.
그래도 제가 하는것들을 정리하면서, 앞으로 꾸준히 블로그가 성장한다는 생각으로 계속해서 하면 2023년에는 다시금 목표를 이룰 수 있지 않을까 생각해봅니다.
1-2. 개인적인 취미 갖기 🏌
필자는 최근들어 Glof를 즐겁게 치고 있습니다. 본격적으로는 8월부터 치기 시작했으며 거의 Daily로 필자가 살고있는 아파트의 골프 연습장에 가서 연습을 했었습니다.
어떠한 레슨도 받은 적이 없으며, Youtube만 보고 모든것이 해결될 것이라고 생각했었습니다. 그러다가 무리하게 힘으로만 하려다보니까 왼쪽 갈비뼈쪽에 상당한 통증이 있었습니다. (아무래도 금이 갔을것으로 추정합니다 😭 )
- 약 10회 이상의 스크린 방문
- Par 3 연습장 방문
- 필드 머리 올리기 ( 세현 CC )
10월달에는 필드까지 가기 위해서 많은 연습을 했었고, 다행히도 필드까지 갔을 때 주변 분들에게 피해가 가는 수준까지는 아니여서 개인적으로도 너무 만족스러웠던 해인거 같습니다.
베스트 스코어만 추려놓긴 했지만, 한동안은 80타수까지 내려가서 가파른 성장세를 보였지만, 현제는 다시 백돌이 수준이 된거 같아서 예전만큼은 아니지만 연습도 꾸준히 하고 있습니다.
1-3. 2022년 사용했던 기술 🧑💻
올 한해에는 기술의 숙련 보다는 빠르게 돌아가는 기획, 개발 상황에서 좀더 가속화 시켜서 DevOps로서 업무를 수행했던 한 해 였던 것 같습니다.
지금도 여러 개발팀에서 개발된 내용이 실제로 오픈되어 운영이 되고 있지만, 신규로 생성되는 어플리케이션에 대한 환경 구성이라던지 CI / CD, 그리고 신규 APM(Datadog) 솔루션 도입이라던지 개인적으로는 정말 다이나믹한 한 해 였습니다.
- DevOps
- Kubernetes
- Garbage Collector
- Blog 운영
블로그에 아직 포스팅 하지 않았지만, Datadog이라던지 운영자동화를 위한 Hubot이라던지 현재에 안주하지 않고 여러가지 개선작업들을 수행했으며, 이부분도 2023년 블로그에 같이 포스팅할 예정입니다.
2. 월별 결산
1월 ❄️- 3월🌱
신규 어플리케이션 환경 구축
현재는 운영되고 있는 서비스들이지만, 1/4분기에는 MSA 구조에 맞춰 정말 다양한 팀들이 우후죽순 생겨나기 시작했고, 사내에 DevOps 역할을 하고 있다보니 신규로 들어오는 서비스들에 대해서는 제가 환경 셋업을 진행해 주었습니다.
필자가 속한 회사에서도 전사의 DevOps 역할을 수행해주는 팀이 있지만 대부분 Tools(Jenkins, Harobr, Argued, Nexus 등등)에 대해서 툴체인 구축 및 운영을 하는 역할이고 각 팀별로의 CI / CD 구성이라던지 모니터링, 로그 수집 등은 자체적으로 구축을 했어야 합니다.
2021년에는 여러개 팀의 공통적인 CI / CD 파이프라인 설계 및 구축을 진행했었고, 신규로 들어오는 팀들에 대해서는 우리의 공통 파이프라인에 적용될 수 있도록 설정해주는 작업을 해주었습니다.
그런데 뜻하지 않게 Front-End 팀까지 신규로 생성을 하게 되었고, 기존에는 FE팀에서 자체 CI 구성 BE팀에서 CD (Nginx 배포) 로 조금은 특이한 구조로 되어있어, 이부분을 모두 DevOps팀에서 자체 구축을 하고 가져오기로 했습니다.
그래서 Ansible이라는 도구를 사용하여 Nginx 설정배포를 자동화 하게 끔 구성을 했고, 현재는 정상적으로 운영이 되고 있습니다.
지난 3월에는 어플리케이션의 Memory Leak 이슈에 대해서 Heapdump 분석 및 조치(라이브러리 버전 업데이트)를 수행 후, 테스트를 진행해봤으며 이러한 부분에 대해서 BE팀에 공유를 해드린적도 있었습니다.
운영 안정화를 위해서 ArgoCD의 Sync, Out Of Sync, Degraded 등 상태에대해서 모니터링 할 수 있도록 Notification 구성을 했었습니다.
4월 🌷- 6월🚣
한창 서비스 개발이 진행이 되고, 여러가지 안정화 작업을 진행했던 것 같습니다. 포스팅에 기록은 해둔것은 아니지만, 전체적으로 서비스 메시 구조를 통일하기 위해서 istio설정 작업을 진행했었습니다.
Kiali라는 도구를 도입하여 구축을 수행했고, 전체적으로 가시성있게 MSA 어플리케이션의 연결 구조를 볼 수 있었습니다. (간단하게 istio, kiali 도입이라고 되어있지만, 전체적으로 Helm 차트를 정비하고, Kiali 설정 작업을 수행하는 부분과 각 개발팀들 대상으로 커뮤니케이션을 하고 전체 적용을 하는 부분이 지금와서 생각해보면 힘들긴 했었던 것 같습니다.)
4월에는 모니터링 강화를 많이 했던 달이였습니다. 이때한번 대용량 트래픽을 우리 시스템에서 받은 적이 있었느데, 서비스가 끊기고 계속해서 Restart를 하는것이 식별 됐었습니다. k8s의 앞단의 Ingress영역에 대한 모니터링이 없었고, 이때 Ingress 모니터링 대시보드를 구축했었습니다.
5월에는 신규로 론칭하는 서비스를 오픈 하는 작업을 진행했었습니다. DevOps에서는 갭라팀에서 개발된 내용이 정상적으로 오픈이 될 수 있도록 Public Network로 연결하는 작업 및 모니터링을 진행했었고, 필자가 속한 회사의 첫 서비스 개시가 되는 부분에 동참할 수 있어서 무척이나 뿌듯했었습니다.
6월부터는 Datadog이라는 APM 솔루션 도입을 위해서 준비 및 POC를 진행했었습니다. 필자가 해당 부서에 왔을 때, 적절히 모니터링할 수 있는 APM 솔루션이 없었습니다. Pinpoint를 적용했지만, 그마저도 전체적으로 연결 상태를 보기가 어려웠엇고, 개별 어플리케이션을 하나씩 봐야하는 문제점이 있었습니다. 이러한 부분에 대해서 솔루션 도입을 제안드렸고, 이에 대해서 POC를 진행하게 됐습니다.
7월 ☔️- 9월 🍁
해당 분기에는 각 레이어별로 모니터링을 정리하고 APM 솔루션까지 적용할 있던 분기였습니다.
7월에는 Datadog에 대한 POC를 마쳤고, 실제 개발계 k8s cluster안에 샘플 어플리케이션의 Helm Chart를 구성한 뒤, APM 연결까지 마쳤습니다. 이후에 QA팀에 요청하여 Traffic 요청을 수행했고, 적절하게 APM 메트릭이 수집되는것을 확인하는 단계까지 마쳤습니다.
8월에는 k8s resource 최적화작업을 진행했습니다. k8s를 1년 넘게 운영하면서 resource 산정에 의심을 품긴 했었지만, 어떤상태가 최적인지를 맞추는것이 없었습니다. 필자가 지난 1년간 수집된 CPU, Memory 기반으로 분석을 수행했고, 100여개의 어플리케이션에 대한 Resource 최적화 작업을 진행했습니다.
최적화 작업을 통해서 굉장히 쾌적환 환경을 제공할 수 있었고, resource가 부족해서 문제가 되는 부분도 없었습니다.
개발
- cpu requested ( 71.7 % → 57.8 % → 35.5%)
- mem requested ( 22.7% → 54.3 % )
운영
- cpu requested ( 71.6% → 69.3% → 55.0 % → 39.5%)
- mem requested ( 11.3% → 10.9% )
또한 추가적으로 개발계 환경은 애초에 Cluster Level에서 리소스가 부족했기에 Worker 증설 작업까지 같이 진행했었습니다. 여러개의 개발팀에 공지를 하고 작업을 수행하면서 이러한 부분들이 DevOps로서 역할이 작동하는 것임을 깨닫게 됐습니다.
9월에는 모니터링 안정화와 개선작업을 진행했었고, 그중에서도 특정 서비스의 적용할 Cronjob을 도입했었고, 기존에는 Spring의 Quarts라는 내용으로 시간 설정이 되었다면, k8s의 Resource를 사용하면서 시간 설정, 중지, 기록 Retry등 여러가지 내용을 활용할 수 있기에 적극적으로 도입을 하게 됐습니다.
또한 서비스 오픈이 8,9월에 각각 있었습니다. 이부분에 대해서도 지난 5월 서비스 론칭과 동일하게 Public Network 연결 및 릴리즈 작업에 참여를 했으며, 정상적으로 오픈이 되었습니다.
10월 🍂- 12월⛄️
마지막 분기에는 Datadog을 실제로 운영 환경에 적용했었고, 거기서부터 개선해야될 부분들을 개발팀에 레포팅 해주는 작업을 수행했었습니다.
그리고 DevOps에서 하는 OPS 작업들을 좀더 Smart하게 할 수 있는 방안들을 고민했었습니다. 그러면서 Hubot이라는 Slack 연계가 편리한 라이브러리를 리서치했고, 릴리즈 자동화 작업을 진행했었습니다.
ChatOps는 DevOps에서 좀더 진보된 환경이고, 이를 통해서 우리가 하고있는 작업들을 모두 공개된 채팅에서 진행하고, 결과에 대해서 공유를 받을 수 있으며 코드 레벨로 작성을 했기 때문에 Human Error의 소지를 현격이 낮출 수 있는 좋은 방안이라고 생각이 됐습니다. 앞으로 활용할 수 있는 사례들이 굉장히 많기 때문에 개발팀에서도 만족하는 팀들도 있고, 아직은 못받아들이는 팀도 있지만 모두가 이러한 방향에 맞춰서 좀더 매끄럽게 업무가 되도록 참여를 해줬으면 좋겠습니다.
Hubot은 내년도에 포스팅으로 정리를 할예정입니다.
아래는 Banksalad 라는 회사에서 ChatOps를 이용하여 배포를 구성한 내용입니다.
11,12월에는 APM을 통하여 여러어플리케이션중 Memory사용률의 특이점이 있는 어플리케이션들을 식별했었고, Heapdump를 분석해서 의심이 가는 구간에 대해서 전달 해드렸습니다. 전달 드린 내용에 대해서 빠르게 피드백이 왔고 조치가 되는 모습을 보면서 굉장히 뿌듯했었던 기억이 있습니다.
3. 2023년 목표는?
지난 1년을 돌이켜보면서, 업무에 치여 많이 힘들기도, 개선을 통해서 뿌듯하기도, 개발팀으로부터의 여러 피드백이나 혹은 칭찬등 다달이 변화되는 감정속에서도 전반적으로는 한 해에 대해서 마무리를 잘했다라는 생각이 듭니다.
DevOps Engineer로서 생각이 많아지는 한 해이기도 했었습니다. 여러개의 BE 개발팀이 생겨나면서 아직은 DevOps의 역할에 대해서 R&R이 제대로 안나누어져있는 거 같아서 2022년에는 그러한 부분들에 대해서 집중을 많이 했던거 같습니다. (가령 미들웨어의 구축 및 운영이라던지…)
- DevOps Roadmap
- 인프라 스트럭쳐 구축 및 운영 ( k8s, VM, Ansible )
- 인프라 코드 관리 ( Helm, Docker )
- 서비스 메시 ( Istio, Envoy )
- CI / CD 구축 및 운영 ( Jenkins, ArgoCD )
- 모니터링 구축 및 운영 ( Prometheus, Grafana, Datadog )
- 로그 시스템 구축 및 운영 ( ES, Loki etc )
- Cloud 관리
- Cloud Design Pattern
DevOps 팀으로서의 역할을 분명히 해야겟다라는 생각이 들기도했고, 다른회사의 DevOps팀들과도 교류를 넓혀야겠다라는 생각이 들기도 했습니다. 그리고 좀더 전문화된 분야를 키워야겠다는 생각도 들었습니다.
작년에는 그래도 로드맵에 맞추어 많이 진행을 했고, 2023년에는 다음의 목표를 이루고자 합니다.
- DevOps 조직 성장 ( 개인적으로는 신입분의 성장 )
- SRE 업무 영역 확장
- 연간 세미나 최소 4회 참석 및 포스팅
- Blog 포스팅 최소 월간 1회 포스팅 👨💻
- 건강 챙기기, 최소 10kg 감량 🏋
4. 마치며…
지난 한해를 돌아볼 수 있는 포스팅이였고, 글에는 모든 내용 그리고 모든 감정들을 담아낼수 없지만, 1년을 돌아보면 그래도 스스로에게 정말 고생 많았다라고 이야기를 해주고 싶습니다.
끝으로 둘째가 2023년에 태어납니다. 좋은 기운을 받아 행복한 가정을 꾸릴 수 있었으면 좋겠습니다. 긴글 읽어주셔서 감사하고 모두 새해복 많이 받으시고, 마지막날 행복하게 보내셨으면 합니다. 🧚