
운영진 티타임때 이야기를 나누었던 Devops 내용에 대해 간략히 정리해보았습니다. 이야기를 들으면서 빠르게 정리한 것이라 어순이 이상할 수도 있습니다. 양해부탁드립니다.
윈도우 개발 사이클이 3년이다.
waterful, agile 등 의 개발 모델이있다.
원래는 3년 이후의 개발 계획을 세웠다. 좀더 효율적이기위한 개발 모델이 나왔다.
2000년대 초에 agile 개발 모델이 나왔다.
원하는 날짜에 release하기가 쉽지 않았다.
프로세스를 간단화하는 방법? 테스트를 자동화하면된다. 테스트를 코드로 짜서 검사를 자동화 시키면된다.
처음에는 개발자가 테스트 코드를 짜서 사용했다.
요즘에는 테스트 코드가 없고, 커버리지가 70 ~ 80 이되지 않으면 프로그램으로 치지도 않는다.
개발이 끝난다면, 배포를 한다. 배포팀이 따로 있고, 배포를 해주는 사람들이다. 그런데, 배포를 해달라고 개발팀에서 주면 잘 안해준다. 고객과 밀접히 연관되어 있고, 프로그램이 고장나면 대응하기 힘들기 때문이다. 굉장히 보수적이다. 그러나 주기적으로 배포를 해줘야한다. 안그러면 시장 경쟁력이 떨어진다.
요즘 배포, 운영, 관리도 자동으로 할수 없는가? → Devops가 나온 이유이다.
Devops가 신입사원이 하기에는 힘든 직종이다. 아예못하진 않는다고 한다.
전통적인 운영팀의 역할
운영팀은 다음과 같은 시스템 안전성 중심의 역할을 수행했다.
예산을 잡을때, 피크타임 기준으로 잡아야한다. 안그러면 서버가 다운될 수도 있으니까.
대표적으로 아마존에서는 블랙프라이데이때만 서버 사양이 부족하여 가상화라는 방법을 썻다.
서버실에 있는 서버들은 생각보다 많이 죽는다. 즉, 하드디스크가 많이 날아간다. 이걸 대응해야한다.
그렇기 때문에 모니터링을 해줘야한다.
특정한 URL에 Ping 테스트를 하는 것을 통해 모니터링을 한다. 로그들을 수집하여 파싱하고 데이터를 보여주는 방법으로 모니터링할 수 있다.
웹사이트를 배포할 떄는 어떻게 하는가? → 회사마다 standard(규격)이 있다. 그러므로 그것에 따라서 배포를 진행하게된다. 회사의 정책에 따라야한다. 개발자는 그 규정을 지키면서 개발 해야한다.
장애대응을 어떻게 빨리 하는가? → 장애를 얼마나 빨리 복구할 수 있는가?가 중요하다.
투피자팀을 만든다.
Multifunctional team은 팀의 구성원들이 모두 개발자가 아니다. 모두 운영자, 테스터, UX/UI 등 다양한 사람들과 함께 한다.
운영도 개발자가 해야한다.
내가 없더라도 다른 사람이 이해할 수 있도록 코드를 짜야한다. 문서를 만든다던가… 진행척도를 작성한다던가… 본인에게 어떤 일이 생길지 모르기 떄문이다.
데브옵스는 CI/CD처럼 코드를 커밋하자마자 배포도 할 수 있게끔하는 역할도 한다.
팀내에서는 다음과 같은 역할들을 해줘야한다.
서버가 응답이 5초 이상이면 서비스 효용성이 없다고 본다. 그러므로 라이트하고 빠르게 증설할수 있게 하는것이 container라는 개념이다.
로그를 저장하는 것도 쉬운일이 아니다. 왜냐하면 분석하려면 파싱해야되기도하고 전세계 대상으로 서비스를 하면 몇 TB의 로그들이 생성되기 때문이다.
나만무때는 Devops가 없기때문에 어떻게 해결할지 고민을 해봐야한다.
빠르게 배포를 할 수 있게끔 노력한다.
MLOps: 프로덕션 환경에서 기계 학습 모델을 안정적이고 효율적으로 배포하고 유지하는 것을 목표로 하는 패러다임이다.
데브옵스와 agile에 대해서 공부를 하고 싶다면, The Phoenix Project 책을 읽으면 하는 일이나 IT 전반적으로 어떻게 일하고 해결을 하는지 알 수 있는 기회가 될 것이다.
회사마다 쓰고 있는 Devops의 개념이 다르다. 운영팀에서 Devops를 하는데도 있고, 개발팀에서 Devops를 하는 데도 있다. 그래서 회사에 상황에 따라 맞춰서 지책을 나아가야한다.
만약에 알고 싶다면, AWS 라이센스를 공부해보면서 Devops에 대해서 알아보는 것도 좋다.
스크럽: 프로젝트 관리를 위한 상호, 점진적 개발방법론이며, 애자일 소프트웨어 개발 중의 하나이다. 소프트웨어 개발 프로젝트를 위하여 고안되었지만 소프트웨어 유지보수 팀이나 일반적인 프로젝트/프로그램 관리에서도 적용될 수 있다.
CI/CD중에 나만무에서 CI정도는 나만무때 하는게 좋을 것 같다.
본인 코드에 대한 테스트 코드가 있어야한다! → 근데, 교육을 아직 안받았음. 그래도 도전해보는 것이 좋지 않을까 싶다. 그러나 못할 것이라고 생각하신다고한다.