1주일 간 CSAP 현장 점검 대응을 하였다. CCE, CVE, 시큐어 코딩 취약점은 물론 네트워크 아키텍처와 인프라 보안 관련해서 무수한 인터뷰를 진행했고 진짜 기진맥진하였다.
사실 등급도 높은 등급이거니와 누군가가 나서서 리드해줄 만한 사람이 없어서 무수한 허점이 드러날 것이라고는 예상했기 때문에 인터뷰 자체에서 얻은 무수한 피드백은 오히려 많은 경험이 되었지만, 아무래도 분위기 자체가 군대 검열 같은 느낌이 강했기 때문에 기가 빨릴 수 밖에 없었다.
그나마 시큐어 코딩 취약점 부분은 많이 준비를 해서 큰 문제는 없었는데 네트워크 아키텍처 부분에 전체적인 보완이 필요한 것 같아서 MSP와 미팅을 진행하며 보완할 예정이다.
입사 이래 제일 기가 빨린 1주였지만 그래도 얻은 것도 상당히 많았다. 네트워크 보안에 대해 좀 더 인사이트를 가지는 계기가 되었다.
1. Docker Engine, Docker Build 공식 문서 1차 정리를 마무리하였다.
3월부터 시작한 Docker Engine, Docker Build 공식 문서 1차 정리를 마무리하였다.
사실 Docker의 경우 Docker의 기본 개념, Dockerfile이나 docker-compose.yaml 파일 작성, 간단한 명령어 정도만 사용했지 Docker Engine, Build의 구조에 대해서는 모르고 있었는데 이번 기회에 적어도 어떤 아키텍처로 작동하는지에 대해서는 간단하게 알게 되었다.
현재 회사에서는 관리형 쿠버네티스를 중점적으로 쓰다 보니 어찌 보면 로컬 개발 환경에서만 Docker와 Docker Compose를 사용하고 있는데 홈 서버를 통한 프로젝트에서는 다시 Docker 기반으로 배포 및 운영을 진행할 생각이라 두고두고 다시 정리를 하고 찾아볼 생각이다.
2. 외부 오프라인 강의에 참여해보았다.
대단한 강의는 아니고 GitHub Actions 관련 강의와 Node.js 입문 관련 강의에 참여해보았다.
GitHub Actions 강의는 튜링의 사과에서, Node.js 강의는 앨리스 트랙에서 진행하였다.
GitHub Actions 강의의 경우 어느 정도 현업 개발자를 대상으로 한 것 같은 느낌이 들었는데 아니나 다를까 현업 개발자들이 많이 보였었다. 반면 Node.js 강의는 입문자들이 대부분이었다.
사실 오프라인 강의는 처음이었는데 새로운 기술을 배운다기보다는 다른 개발자들은 어떻게 강의를 듣는지 궁금해서 참여한 성격이 강했다. 일단 두 번의 강의를 통해 느낀 점은 꼭 기술 스택을 위해서가 아니더라도 다른 개발자들은 어떻게 활동하는지 구경하고자 참여해보는 것도 나쁘지는 않다는 생각이 들었다.
그리고 어쨌든 두 강의 모두 관심이 있었던 내용에 대해 간단히 소개를 해줬기 때문에 필요하다면 공식 문서나 추가 강의를 통해 심도 있게 공부를 해 볼 생각이다. 일단 GitHub Actions는 머지 않아 도입을 해야 할 것 같다는 생각도 들고.
3. Kubernetes 공식 문서는 여전히 정리 중
Kubernetes 공식 문서를 크게 개념, 태스크, 레퍼런스, API 4가지 덩어리로 나눴는데 개념 부분만 해도 양이 많아서 꾸준히 정리 중에 있다.
확실히 느낀 것은, 이전에 국비 지원 과정에서 배웠던 내용은 상당히 함축적인 것들이 많았다는 점. 물론 공식 문서다보니 지원이 종료된 내용이나 굉장히 세부적으로 다루고 있는 내용들도 있지만 심도 있게 파고들어야 하는 내용들이 상당히 많았다.
사실 Kubernetes를 다루는 백엔드 개발자와 Kubernetes를 다루는 인프라 / 플랫폼 개발자를 구분했을 때 아직까지 나는 겨우 Kubernetes 한움큼 정도 다룰 줄 아는 백엔드 개발자 수준이라고 생각하지만 배움의 깊이를 더해서 인프라 / 플랫폼 개발자 수준까지는 아니더라도 그러한 인원들이 없는 환경에서도 업무를 수행하고 인프라와 개발 문화를 형성할 수 있는 사람이 되고 싶은데 이를 위해서는 공식 문서를 심도 있게 봐야겠구나 하는 생각이 많이 든다.
초기에는 2~3개월 짜리 분량으로 생각해뒀었지만 계획을 수정했다. 버전 업도 상당히 빠른터라 1차 정리에는 못해도 6개월, 1차 정리 이후에도 버전별 변경점 부분을 확인하면서 꾸준히 봐야 할 것 같다. 운영 환경에서 생기는 이슈에 대한 내용들은 더더욱 꼼꼼히 봐야 할 것 같다.
여러모로 네트워크 접근 통제에 대해 다시 생각해보는 계기가 되었다. 보안 그룹 하나만 믿고 접근 통제를 했다고 생각한 내 자신을 반성한다. (물론 CSAP라서 매우 엄격하게 보는 것도 있다)
Pod 간 통신에 대해서도 접근 통제를 해야 한다는 사실을 확인했다. 사실 프로젝트 진행 초기에는 Istio 서비스 메시로 VirtualService + DestinationRule 또는 PeerAuthentication을 사용할까 했다가 기술 난이도로 인해 잠시 내려놓았었는데 그 이후로 Pod 간 통신에 대해서 놓치고 있었던 부분이 있다. 일단은 Chart 배포 시 NetworkPolicy 리소스도 추가하여 배포해볼 생각이다.
여러 가지 배경을 다 떼어놓고 요약하자면 협업 시 커뮤니케이션을 할 때 너무 방어적으로만 하지 않았나 하는 생각이 든다.
어쨌든 누군가의 요청 사항인 만큼 구현 시 문제가 발생하거나 이슈가 우려되는 상황이더라도 너무 방어적으로만 대응하지 말고 정말 필요한 기능인지, 발생할 수 있는 이슈는 이러한 것들이 있다고 설명을 하고 그럼에도 필요하다면 일단 구현 또는 수정을 하는 것이 좋을 것 같다.
1. Kubernetes 개념 부분 정리 마무리, 태스크 부분 정리 시작
개념 부분은 어느 정도 마무리를 지을 수 있을 것 같고 태스크 부분은 실무 및 운영에서의 팁을 제공하는 내용으로 보이는데 이 부분도 심도 있게 정리해볼 생각이다.
2. PostgreSQL 관련 정리
사실 작년부터 MongoDB 기반 프로젝트를 주로 했었기 때문에 자연스레 RDBMS와 거리가 서서히 멀어지고 있었는데 (물론 아예 안 쓴 것은 아니지만) 자사에서 주로 활용하는 PostgreSQL에 대해서도 다시 공부를 진행할 계획이다.
MongoDB를 계속 쓰면서 느낀 것인데 정말 편하긴 하지만 애초에 데이터 정합성과 정규성이 중요한 비즈니스에서 쓰이는 용도가 아님에도 좀 억지로 쓴 느낌도 강해서... RDBMS를 복습하고자 보려는 느낌이 강하다.
3. SQLD 공부 내용 복습
작년에 SQLD 공부를 위해 정리했던 내용을 빠르게 복습할 생각이다. 사실 내용 자체는 쿼리문 위주가 많았어서 쿼리문을 외운다기보다는 데이터 모델링 부분 위주를 볼 생각이다. 물론 쿼리문도 아예 안 보지는 않고 빠르게 훑을 생각. PostgreSQL 정리와 같이 진행할 계획.
4. 혼자 공부하는 컴퓨터 구조와 운영체제 공부 내용 복습
마찬가지로 작년에 공부하고 정리했던 내용을 빠르게 복습할 생각이다. 아직까지는 여기서 공부했던 내용들이 크게 도움이 된 적은 없었지만 그렇다고 한 번 공부했으니 안 본다! 는 좀 아닌 것 같다.
기억이 가물가물해지기 전에 리마인드 차원에서 가볍게 볼 생각.
5. 사이드 프로젝트 기획
사이드 프로젝트를 기획할 예정. 이전에 기획했던 내용과 이어서 할지, 아니면 잠시 뒤로 미룰지는 좀 더 고민해볼 생각.