지난 번에 은닉화(Encapsulatioin)에 대해 이야기 했다. 인터페이스가 가지는 특징 중 가장 큰 것이 바로 상대를 배려하는 은닉화라고 말했다. 객체기반프로그래밍(Object Oriented Programming)이 가지는 유지보수의 유연함은 바로 이 특징에서 나온다는 이야기를 했다. 그렇다면 그 개념을 확장해서 다형성(Polymorphism)에 대해 생각해 보자. 무엇인가를 요청했을 때 실제로 어떻게 동작하는 지 간섭하지 않는 것이 은닉화의 특징이라고 했다. 그렇다면 요청을 받는 쪽에서 어떻게 실행 할 지 스스로 결정할 수 있으며 그 방법은 매우 다양하게 나타날 수 있다. 예를 들어 아이스크림 2개를 구매해 달라고 부탁했다고 생각해보자. 아이스크림 가격을 지불하고 작업 수행을 요청하면 요청을 받..
테라폼(Terraform, https://www.terraform.io)은 지구와 비슷한 행성을 사람이 살 수 있는 환경으로 만든다는 뜻을 가지고 있다. 터레인(Terrain, 지형)이라는 단어를 이미 알고 있다면 더 쉽게 뜻을 유추할 수 있을 것이다. 이름에서 알 수 있듯이 테라폼은 클라우드(Cloud)환경 위에 사용자가 원하는 형태의 인프라스트럭처(Infrastructure)를 만드는 도구이다. 간단히 말하자면, 하시코프(HashiCorp)에서 만든 인프라스트럭처 애즈 코드(Infrastructure as Code, IaC)를 위한 도구이다. 참고로 AWS(Amazon Web Services)에서는 테라폼이 나오기 전에 자신들의 자원(Resources)들을 관리하기 위하여 비슷한 기능의 도구를 제공했..
몇 년 전, IoT 과제에 참여했을때 이뮤터블 아티팩트(Immutable Artifact, 변경불가능한 결과물) 또는 이뮤터블 인프라스트럭처(Immutable Infrastructure)에 대해 겪은 것을 이야기를 하려고 한다. IoT과제는 지속적 전달(Continuous Delivery)과 이뮤터블 인프라 스트럭처 를 도입하였다. 그러나 안타깝게도 대부분의 사람들은 그 개념이 무엇인지 잘 몰랐다. 기존 회사의 엔지니어들이 하던 방식을 그대로 따르기만 했기 때문이었다. 그래서 이뮤터블 인프라스트럭처에 대한 근본적인 이해가 없었고 그래서 일정 압박을 핑계로 운영환경의 긴급 변경 요청을 많이했다. 테스트(Test)를 충분히 하지 않은채 배포하다가 결함이 발견되면 운영환경에서 바로바로 고치길 원했다. 그러던 ..
파이프라인(Pipeline)이 갖는 가장 큰 의미는 자동화를 통하여 위험요소를 사전에 차단한다는 것이다. 파이프라인을 이용하여 석유나 가스를 옮기는 것을 생각해보자. 우리는 미리 정해진 통로를 이용하여 원하는 위치로 석유를 옮길 수 있다. 또한 이동 중간에 어떠한 불순물이나 위험요소가 들어오지 못하도록 차단할 수 있다. 소프트웨어 서비스(Software Service Application) 를 개발하고 배포하는 과정도 이와 같이 외부의 개입을 최소화하여 정해진 순서대로 흘러가도록 한다면 개발자(생산자)가 만든 결과물이 그대로 소비자에게 전달될 것이다. 중간에 불필요한 간섭이나 개입으로 인한 부작용이 사라지기 때문에 서비스 품질을 유지할 수 있다. 그래서 파이프라인은 지속적 전달(Continuous Del..
마이크로서비스(Microservices)를 기반으로 운영하다보면 간혹 인기가 많은 특정 서비스에 요청이 집중되는 현상이 나타난다. 보통 어카운트(Account) 또는 프로파일(Profile) 서비스에 부하가 많이 몰린다. 하지만 대부분 성능 검증(Load Test, Stress Test, Aging Test)을 통해서 서버(Server) 한 대당 어느 정도를 처리할 수 있을 지 미리 가늠할 수 있고, 그 결과를 기준삼아 스케일 아웃(Scale-out) 정책을 펼쳐서 몰려드는 요청을 처리할 수 있다. 대부분은 이러한 방식으로 처리가 가능하지만, 특수한 예외상황도 존재한다. 이를테면 인증 서비스(Authentication, i.g., sign-in/log-in)에서 문제가 발생했을 경우가 있다. 사용자들이 ..