DevOps 아키텍처 살펴보기
잘 설계된 아키텍처는 최종 사용자에게 비즈니스 가치를 신속하게 제공할 수 있는 고속도로와 같습니다. 제대로 설계되지 않은 아키텍처는 무너진 다리와 같아 사용자가 최종 목표를 달성할 수 없게 됩니다.
소프트웨어 아키텍처 소개
모든 아키텍처의 장기적인 실행에는 성공적인 설계, 구현, 업그레이드, 불가피한 변경이 필요합니다.
아키텍처는 실제로 운영될 때까지는 추상적인 상태입니다.
미국에서 가장 뛰어난 건축 설계사 중 한 명인 William LeMessurier는 뉴욕의 혁신적인 Citicorp 본사 타워의 설계자 및 건축 컨설턴트로 근무했습니다. 1977년 타워가 완공되었습니다. 이듬해, 타워 설계를 연구하는 프린스턴 대학의 학생들이 LeMessurier에게 잠재적 결함을 알렸고 LeMessurier는 실제로 건물에 구조적인 결함이 있음을 확인했습니다.
건물은 시속 70마일의 바람에 견딜 수 없었습니다. 하지만 기상청에 따르면 뉴욕시에서는 55년마다 한 번 이상씩은 이런 바람이 발생했습니다. 이 속도의 바람이 불면 접합부에 결함이 생겨 건물이 13층부터 붕괴됩니다. 당시 타워에는 입주가 완료되지 않은 상태였습니다. LeMessurier는 타워 소유자와 시 당국에 이 소식을 알려야 했습니다.
LeMessurier는 전문가의 책임이라는 복잡하고 어려운 문제에 직면했습니다. 많은 사람들에게 구조적인 결함에 대해 경고하고, 허리케인으로 건물이 붕괴되기 전에 Citicorp에서 결함을 시정하게끔 해야 했습니다.
그해 여름, 허리케인 Ella가 뉴욕시를 강타했습니다. 건물은 안전했습니다. 이후로도 Citicorp 타워는 굳건히 자리를 지키고 있습니다.
중요
소프트웨어 아키텍처에서는 기본적인 구조의 선택이 중요한데, 일단 구현되고 나면 변경하는 데 큰 비용이 들기 때문입니다.
소프트웨어 아키텍처의 특징은 다음과 같습니다.
- 관련자: 비즈니스 관련자, 애플리케이션 팀, QA 팀, 운영, 보안, 사용자 등
- 관심사 분리: 복잡성을 줄이기 위해, 설계를 주도하는 관심사를 분리
- 품질 중심 특성: 스케일링 성능, 확장성, 안정성, 유지 관리 용이성, 보안 등
- 개념 무결성: 소프트웨어 아키텍처는 아키텍처, 데이터, 프로세스 무결성을 유지하기 위한 기능과 그 방식에 대한 전체적인 비전을 나타냅니다.
- 인지적 제약: 조직은 커뮤니케이션 구조와 동일한 설계를 할 수밖에 없습니다.
- 반복적인 스타일: 소프트웨어 아키텍처 분야에서는 반복적인 우려사항을 해결하기 위한 표준적인 방식을 개발해야 합니다.
모든 아키텍처는 다음 “특성”을 제공합니다.
- 감사 가능성
- availability
- 호환성
- 조합성
- 구성 가능성
- 내게 필요한 옵션(accessibility)
- 적응성
- 경제성
- 사용자 지정 가능성
- 시연 가능성
- 배포 용이성
- durability
- 사용 편의성
- 확장성
- 유연성
- 상호 운용성
- 관리 효율성
- 이식성
- 예측 가능성
- 복구 가능성
- 안정성
- 반복성
- 재사용 가능성
- 확장성
- 서비스 효율성
- 사회성
- 단순성
- 테스트 가능성
- 지속 가능성
- 추적 가능성
- 재현 가능성
소프트웨어 빌드 시 설계자는 해당 “특성” 중 가장 중요한 특성을 결정해야 합니다. 그러나 해당 요인 중 상당수가 서로 상충됩니다.
예를 들어 고성능과 우수한 스케일링 성능을 달성하려면 아키텍처, 운영, 기타 여러 요소 간의 균형을 유지해야 하므로 어려울 수 있습니다.
의사 결정 프로세스는 균형을 맞추는 작업입니다. 각각의 의사 결정에 따른 장단점의 균형을 맞추다 보면 포기해야 하는 것들이 생기기 때문에 설계자들은 이를 아쉬워하는 경우가 많습니다.
최근 수년간 소프트웨어 개발을 위한 핵심 엔지니어링 사례가 점차 증가하면서, 시간이 지남에 따라 아키텍처가 어떻게 변화하는지, 그리고 해당 변화가 일어날 때 중요한 아키텍처 특성을 보호하는 방법에 대해 재고해볼 수 있는 기반이 마련되었습니다.
DevOps 아키텍처
Gene Kim은 저명한 DevOps 연구원이며 저자이자 선구자입니다. Kim은 DevOps를 구현하는 데 필요한 사항으로 다음 세 가지를 꼽습니다.
“첫 번째는 문화적 구성 요소입니다. 물론 두 번째는 도구 및 기술입니다. 세 번째는 아키텍처입니다. 자동화를 포함하는 우수한 기술 사례가 필요합니다. 신뢰의 문화가 필요합니다. 그리고 이를 실현하려면 아키텍처가 필요합니다.”
그의 저서, Accelerate에 소개된 연구에 따르면 새로운 시스템, 기록 시스템, 상용 소프트웨어 패키지, 메인프레임 소프트웨어, 내장 소프트웨어를 비롯하여 다양한 유형의 시스템의 시스템 유형과 제공 성능 간에 유의미한 상관 관계가 없는 것으로 나타났습니다. 중요한 것은 배포 용이성과 테스트 용이성입니다.
팁
우수한 아키텍처는 배포 용이성과 테스트 용이성을 지원합니다.
아키텍처 및 조직
Conway의 법칙은 1967년에 아이디어를 소개한 컴퓨터 프로그래머 Melvin Conway의 이름을 따서 명명되었습니다. 시스템 디자인은 시스템을 설계하는 조직의 커뮤니케이션 구조에 의해 영향을 받는다는 법칙입니다.
중요
Conway 법칙: 시스템(광범위한 정의)을 설계하는 조직은 조직의 커뮤니케이션 구조와 동일한 구조의 설계를 만듭니다.
이 법칙은 소프트웨어 모듈이 작동하려면 여러 작성자가 서로 자주 커뮤니케이션해야 한다는 논리를 바탕으로 합니다.
따라서 시스템의 소프트웨어 인터페이스 구조에는 이를 생성한 조직의 사회적 경계가 반영되는데, 사회적 경계 간에는 커뮤니케이션이 더 어렵습니다.
Enterprise DevOps에서 설계자의 기술
설계자는 다음과 같은 다양한 기술을 개발하고 연마합니다.
- 광범위한 사고
- 시스템 사고
- 비즈니스 지식
- 대인 관계 기술
- 영향 및 리더십 기술
- 기술적 아키텍처의 이해
- IT 재무 관리 환경
- 시간 관리
- EA(엔터프라이즈 아키텍처) 프레임워크에 대한 노출
- 임원진에게 IT를 설명하는 역량
- 프레젠테이션 기술
- 코칭 기술
- 데이터 아키텍처 및 IT 작업 이해
중요
21세기의 성공에 가장 중요한 기술은 무엇일까요?
학습에 대한 의지와 능력입니다.