DevOps와 SRE의 다른 점

(2020년 1월)지금으로 부터 약 13년전 구글은 제품 생산 관리 방식을 바꾸기로 결졍한다. 개발팀은 새로운 기능을 만들어서 제품에 적용하는데 집중했지만 운영 그룹은 만들어진 제품을 안정적으로 유지하려고 노력했다. 두 조직의 이해가 상충했다. 이러한 긴장은 다른 경험, 기술 세트, 평가 기준의 차이로 발생했다.구글의 운영 책임자 중 한명인 Ben Trey...

git

Git은 소프트웨어 개발에서 발생하는 소스 코드의 변화를 추적하기 위한 분산 버전 관리 시스템이다. 프로그래머 간의 소스코드 작업을 조정하기 위해서 설계되었지만 바이너리 파일을 포함한 모든 파일의 변경 사항을 추적하는데 사용 할 수 있다. Git의 목표는 속도, 데이터 무결성, 분산 워크플로우의 지원이다. Git은 리누즈 토발즈(Linus Torvalds...

Nexus3로 private maven repository 구성

사내에서 Git, Docker Image Registry, Maven Repository, PyPI, Gem, YUM, DEB등의 저장소를 운영하려면 격리된 환경에 각 목적에 맞는 소프트웨어를 설치해서 운영해야 한다. 엄청나게 귀찮은 작업이 아닐 수 없다. 하지만 이런 저런 이유로 Private Repository 시스템을 구성이 필요한 경우가 있다. 금융...

Grafana, InfuxDB, Telegraf를 이용한 모니터링 시스템 구성

원래는 Prometheus를 기반으로 모니터링 시스템을 구성할 계획이었으나 여러 이유로 influxDB를 기반으로 하는 모니터링 시스템을 구성하게 됐다. 구성 과정을 기록으로 남긴다. 운영 중인 www.joinc.co.kr를 모니터링 한다. www.joinc.co.kr 서버는 에 위치하고 있으므로 이론상 CloudWatch 만으로 모니터링 시스템 구성이 가...

Vault 소개

Vault를 공부해보려 한다. 여기에서는 진짜 컨셉만 다룬다.Vault는 HashiCorp에 의해서 개발된 크로스플랫폼 패스워드 및 인증 관리 시스템이다. 공개되면 안되는 비밀번호, API 키, 토큰 등을 저장하고 관리한다.스토리지 백엔드는 암호화된 데이터를 저장하기 위한 스토리지를 담당한다. Vault는 스토리지의 종류, 가용성 등을 책임지지 않는다. 어...

SRE 적용

Cloud Native 환경에서 SRE를 적용해 보려 한다. 다양한 사례들을 수집하고, 수집한 내용들을 운용중인 AWS에 접목하기 위한 나의 고민들로 채워진다. SRE에 대한 이론적인 내용보다는 실질적인 내용을 주로 다룰 것이다. 아주 먼 옛날에 IT 회사는 개발과 운영이 서로 분리돼 있었다. 좀 더 들어가보면 개발, 운영, 설계, 기획, 마케팅 등이 전부...

Terraform workspace

서비스 인프라를 구성 할 때, 프러덕션 인프라 하나만 구성하는 경우는 없다. CICD 환경울 구성했다면 최소 두 단계, 일반적으로 3단계의 인프라가 구성된다. Dev QA Production 클라우드 환경에서는 인프라도 소프트웨어 구성요소다. 개발이 여러 단계를 거치는 것처럼, 인프라도 여러 단계를 거치면서 테스트, 피드백, 개선의 작업을 거쳐야 한다....

SRE - Site Reliability Engineering

Site Reliability Engineering(이하 사이트 신뢰성 엔지니어링 혹은 SRE로 표기한다.)는 소프트웨어 엔지니어링 기술들을 인프라 및 운영에 적용하는 것을 의미한다. SRE 팀을 이끌고 있는 Google의 Ben Trenor에 따르면, SRE는 "소프트웨어 엔지니어가 이전에는 작업이라고 불렀던 일을 처리 할 때 어떤 일이 일어날지"에 대한...

Continuous integration

소프트웨어 엔지니어링에서 CI는 모든 개발자의 작업 사본을 공유하고, 하루에 여러 번(수시로 혹은 짧은 간격으로) 병합하는 프로세스를 말한다. 1991년 Grady Booch가 CI라는 용어를 처음 제안했으나 당시에는 여러 번 통합하는 것을 권유하지는 않았다. XP(eXtreme programming)에서는 하루에 한번이상 통합할 것을 권하고 있다. CI는...

Continuous delivery

Continuous delivery(CD 혹은 CDE, 지속적인 전달)는 팀이 짧은 주기로 소프트웨어를 생산하는 방식으로 소프트웨어를 안정적으로 출시할 수 있도록하는 엔지니어링 방식이다. 빠른 속도와 잦은 빈도로 소프트웨어를 개발하고, 테스트를 끝내고 출시하는게 목표다. 이 접근법을 이용하면 응용 프로그램을 보다 점진적으로 개선하고 변경 사항을 업데이트 할...