회고모음 37

무한루프 걸리는 쿠버네티스 job 디버깅 과정

제가 일하는 곳은, 데이터 분석가가 사내 플랫폼을 이용하여 분석코드를 실행합니다. 자원이 많이 필요할 때 사내 플랫폼 자원을 빌려 써 문제를 해결합니다!. 플랫폼은 데이터분석가 코드를 쿠버네티스 JOB으로 실행합니다. 그런데, 어떤 데이터분석가가 고객센터에 문의글을 올렸습니다. 가끔씩 작업이 안끝나고 무한루프상태에 빠져있다고 말이죠. 처음에는 쿠버네티스 버그 또는 플랫폼 자체 버그인줄 알았습니다. 하지만, 디버깅을 해보니 분석가가 사용하는 외부모듈에서 문제가 있는 것 같아, 해당 모듈 개발자에게 문의를 했습니다. 질답결과 데이터를 조회하는 로직에서, 알수 없는 이유로 데이터를 못받으면 무한루프에 빠질 수 있을 가능성을 발견했습니다. 감사하게도 모듈개발자가 테스트해본다고 했습니다 사실, 혼자 힘으로 쿠버네..

회고모음 2022.07.12

Loki API를 사용하면서 불편한점!

쿠버네티스 파드 로그 저장소를 보통 엘라스틱서치를 많이 사용하는 편입니다. 하지만, 다루기 어렵고 높은 사양을 요구해서 가볍게 사용하는 환경에서는 Loki를 대체로 사용합니다. 불편한 점 첫번째 - 그라파나 제한된 기능 Loki의 Loki대시보드를 그라파나로 사용할 경우 권한분리 기능이 유로입니다. Edit권한이 있는 계정이 있어야 그라파나에서 파드 로그를 볼 수 있습니다. 불편한 점 두번째 - Loki API 제가 참여한 팀은 그라파나 유료기능을 사용하지 않아 자체 API기능을 만들기로 했고 그 개발을 제가 일부 맡았습니다. Loki API로 순탄하게 진행될거라 생각했지만!!! Loki API응답에서 400 또는 500에러가 가끔씩 발생했습니다. 열심히 디버깅을 해보니 놀랍게도... retention설..

회고모음 2022.06.28

6월 4주차 회고

1. 회사업무 1.1 리팩토링 롤백 파이썬 프로젝트에서 새로운 요구사항을 추가하기 위해 리팩토링을 했습니다. 기존 구조에서 새로운 기능을 추가하려면 고칠 부위가 많아서 공통적인 기능을 모으는게 좋다고 생각했습니다. 리팩토링을 하고 새로운 기능을 추가하고 테스트코드를 추가했지만, 팀 인원이 개발에 투자할 시간이 없기 때문에... 롤백을 하고 똑같은 코드를 여러곳에 추가했습니다. 개발팀이 아니고 설계된 내용을 코드로 옮기는 팀이므로 개발적인 리팩토링은 과감히 버린 것 같습니다. 1.2 loki 아키텍처 분석 공식문서: https://grafana.com/docs/loki/latest/fundamentals/architecture/#read-path [챕터 1.1]에 개발한 내용은 loki API문서를 한번 ..

회고모음 2022.06.26

6월 3주차 회고

1. 팀프로젝트 1.1 빌드/배포 파이프라인 알림기능 추가 정리링크: https://malwareanalysis.tistory.com/353 빌드/배포 파이프라인에서 CI/CD시스템으로 발전하기 위해, 제일먼저 알림기능부터 추가했습니다. 채팅메신저는 discord를 사용하고 있어서 discord webhook을 사용했습니다. 1.2 gitops 파이프라인 수정 - git commit allow-empty 정리링크: https://malwareanalysis.tistory.com/354 현재, git tag기반으로 컨테이너 tag를 설정했습니다. 문제는, git tag가 변화가 없으면 commit이 안되는 현상이 있어 빌드/배포가 실패했습니다. commit 메세지가 없어도 git commit이 되도록 al..

회고모음 2022.06.19

빌드/배포 시스템 VS CI/CD 시스템

"구글 엔지니어는 이렇게 일한다" 책 "CHAPTER 18 빌드 시스템과 빌드 철학"를 읽으면서 많은 생각을 하게되었습니다. 빌드/배포 시스템 말 그대로 소스코드를 빌드하고 서버에 배포를 수행하는 시스템을 빌드/배포 시스템이라고 합니다. 단순히, 빌드와 배포만 수행합니다. CI/CD 시스템 빌드/배포 이외에 알림, 테스트 자동화, 배포 승인 등 여라가지 기능을 통합하여 수행하는 것을 CI/CD시스템이라고 부르는 것 같습니다. 꼭 있어야 하는 요소는 테스트 자동화와 알림이 있습니다. 내 회사는? 책을 읽고 다른 회사 기술 블로그를 읽어보니 제 회사는 단순 빌드/배포 시스템이라고 판단했습니다. 그리고, 제가 고칠수 있는 권한이 없습니다. ㅜ.ㅜ 그래서 팀프로젝트에 알림 자동화와 테스트 자동화를 적용하려고 합..

회고모음 2022.06.19

docker-compose 컨테이너간 통신 오류 해결

6.11 광주에서 서울로 잠깐 방문한 동생이 docker-compose 문제를 물어봤었습니다. 통신이 안된다는 문제였는데.. 금방 해결하겠지라고 생각했지만, 약 3시간 이상 시간을 투자해서 문제를 해결했습니다. 1. 문제 마주쳤던 문제는 일방향 컨테이너 통신만 가능했습니다. 큰 아키텍처는 애플리케이션(app), mariadb를 docker-compose 아래 그림처럼 구성되어 있었습니다.자세한 설정은 보안상 생략했습니다. 애플리케이션→mariadb로 ping이 안되었지만, mariadb→app으로 ping은 되었습니다. 디버깅을 위한 busybox는 양방향 통신이 가능했습니다. 2. 문제 원인 찾는 과정 2.1 docker service discovery 먼저, app→mariadb에서 ping이 안된 ..

회고모음 2022.06.12

5월 3주차 회고

SK OOOO 재계약이 되어 근무지가 분당으로 변경되었습니다. □ 회사 1. python 가상환경 troubleshooting aws cloud9, 구름 IDE처럼 사내 플랫폼에서 데이터 과학자를 위한 vscode, jupyter시리즈 IDE를 제공하고 있습니다. IDE는 쿠버네티스로 관리되고 있습니다. 문제는 python 가상환경이 적용안되어서 원인을 찾고 가상환경 적용을 완료했습니다. 문제원인은 ubuntu에서 python패키지 미설치여서 해결과정은 이전 글(https://malwareanalysis.tistory.com/334)에 게시했습니다. 2. CI/CD시스템 오류 troubleshooting 사내 플랫폼 helm차트는 jenkins로 배포되고 있는데 어느날 부터 안되었고 약 3주간 방치되어 ..

회고모음 2022.05.22

SK OOO AWS 프로젝트를 마치며

2022. 4월 파견간 곳이 계약이 임시만료되어 SK OOO 프로젝트에 긴급투입되었습니다. 4.18 ~ 5.2동안 프로젝트를 수행하여 무사히 완료되었습니다. 프로젝트 주제는 IDC로 운영하고 있는 데이터 파이프라인과 애플리케이션을 AWS클라우드로 마이그레이션 하는 작업이었습니다. AWS잘 모르는데 빨리 끝내야하는 프로젝트에 투입된 ... 프로젝트를 진행하면서 기억에 남는 내용을 정리하려고 합니다. 1. 계정별 네트워크 분리와 연결 SK OOO 보안규정으로 네트워크 망을 계정별로 분리하고 연결시켰습니다. 보안팀 개발팀 운영팀의 의견 다툼이 있었던 부분이었습니다. 개발, 운영팀은 한 계정안에 VPC로 환경을 분리하고 싶었지만 보안팀은 내부규정때문에 환경별로 계정분리를 원했습니다. 결과적으로 보안을 준수해야하..

회고모음 2022.05.15