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

Opsgenie를 이용한 AWS 인프라 이벤트 관리 시스템 구성

나는 인터넷 서비스의 품질을 확보하기 위한 가장 중요한 활동을 아래와 같이 정의 한다. 문서화 테스트가 포함된 모니터링, 관제 시스템 및 장애(인시던트)관리 프로세스 모니터링 결과는 결국 알람과 인시던트의 형태로 출력된다. 알람과 인시던트는 업무처리 시스템에 따라서 처리를 해야 한다 대략적인 프로세스는 아래와 같을 것이다. 이벤트, 경고(alert),...

마이크로매니지먼트

Wikipedia에 가장 정리 잘된 것 같아서 번역했다. 물론 대충. 출처는 이 문서는 비지니스에서 발생할 수 있는 업무관리 방식에 대한 것이다. 비지니스에서 마이크로매니지먼트는 관리자가 부하 직원이나 직원의 작업을 면밀히 관찰하고 통제하는 관리 스타일이다. 일반적으로 마이크로매니지먼트는 직장에서 자유를(자기결정권과 책임) 박탈하기 때문에 부정적인 행위로 ...

Go언어에서의 TDD

여기에서 사용한 테스트 코드는 에서 다운로드 할 수 있다.클라우드와 MSA와 의 등장으로 (2016년 6월)TDD가 재조명 받고 있다. TDD의 큰 단점 중 하나는 제대로 적용하려면 상당히 많은 시간과 노력이 필요하다는 점이다. 특히 여기 저기 연동되는 라이브러리나 소프트웨어가 많은 경우 테스트가 굉장히 복잡해지는데, 복잡해지는 만큼 테스트의 신뢰성도 함께...

curl을 이용한 인터넷 데이터 전송

웹 서버에 대한 배치작업이 필요한 경우가 있다. 이런 작업에 웹 브라우저를 사용할 수 없는 노릇이니 CLI 도구를 사용해야 한다. curl은 가장 널리 사용하는 인터넷 데이터 전송을 위한 도구다. # curl --versioncurl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.1...

MSA에서의 REST API 테스트 방안

이름 닉네임 사이트 NaverLabs 클라우드(주로 AWS) 환경에서 서비스 백앤드를 개발. 우분투리눅스 18.04 vim-go + ycm Makefile + glide 개발 환경을 소개 합니다. 여기 있는 문서들은 평소의 제 개발환경에서의 경험을 기반으로 하고 있기 때문에 나름 의미가 있을 거라 생각합니다. 우분투리눅스를 데스크탑으로 하고 있고요...

VPC Private link를 이용한 SaaS 개발

PrivateLink는 VPC 내부에서 외부에 있는 다른 서비스를 연결하기 위한 기술이다. PrivateLink를 이용하면, 퍼블릭 네트워크(인터넷)을 거치지 않고도 AWS의 서비스와 다른 서비스(다른 계정의 네트워크, 다른 VPC에 존재하는)를 호출 할 수 있다.PrivateLink는 아래와 같은 장점이 있다. 트래픽보호 간단한 네트워크 구성 마이그레...

Docker Compose

Docker compose는 여러 컨테이너를 쉽게 실행 할 수 있도록 도와주는 도커 실행 툴이다. 이미지에서 컨테이너 하나 만들려면, 많은 옵션들을 설정해야 하는데, yaml 형식의 설정파일을 이용해서 여러개의 애플리케이션 서비스들을 효율적으로 관리 할 수 있다. 특히 Compose는 개발, 테스트, 스테이징 환경을 만드는데 많은 도움을 준다. Compos...