주제 3.6 — 데브옵스 및 엔지니어링 우수성

한 문장으로: 임상 시스템에서 규율 있는 엔지니어링 — 자동화된 파이프라인, 작고 되돌릴 수 있는 릴리스, 코드형 인프라, 관측 가능성 — 은 변경을 더 위험하게가 아니라 더 안전하게 만드는 것이며, "소프트웨어를 어떻게 만들고 운영하는가"를 안전, 형평성, 대중 신뢰의 관심사로 다루는 것이 성숙한 디지털 보건 조직의 표지다.

보건·돌봄에서 이것이 중요한 이유#

소프트웨어를 엔지니어링하고 운영하는 방식은 그 자체로 임상 안전 통제다. 지역 간호사가 약물 변경을 볼 수 없을 때, 전자 의뢰가 조용히 실패할 때, 장애로 임상의가 공유 진료 기록에서 차단될 때, 해악은 추상적 불편이 아니라 치료 지연, 놓친 알레르기, 안전 보호의 공백이다. 이 주제의 엔지니어링 실천은 필요한 수정이 10분 만에 프로덕션에 닿는지 10주 만에 닿는지, 나쁜 변경을 깔끔하게 되돌릴 수 있는지 임상의가 고장 난 시스템을 며칠씩 우회하며 일하게 되는지를 결정한다.

규제 영역에는 변경은 위험이므로 가장 안전한 시스템은 가장 덜 건드리는 시스템이라는 끈질기고 위험한 통념이 있다. 증거는 반대를 가리킨다. 거의 변경되지 않는 시스템은 패치되지 않은 취약점, 취약한 수작업 배포 단계, 문서화되지 않은 부족의 지식을 쌓는다. 마침내 변경이 불가피해지면 — 보안 패치, 규제 기한, 공급업체의 철수 — 그것은 크고, 위험하고, 잘 이해되지 않은 "빅뱅"으로 도착한다. 자동화와 빠른 롤백으로 작은 변경을 자주 배포하는 조직은 더 적은 실패를 겪고 더 빨리 복구한다. 보건·돌봄에서 그 차이는 환자 안전으로 측정된다.

엔지니어링 우수성은 형평성과 대중 신뢰의 문제이기도 하다. 관측 가능하지 않은 소프트웨어는 오래된 기기를 쓰거나 연결이 열악한 지역의 사용자에게 서비스가 더 나쁘게 작동한다는 사실을 숨긴다. 안전하지 않은 소프트웨어 공급망은 기밀 환자 정보를 위험에 빠뜨린다(주제 1.7 — 정보 거버넌스, 데이터 보호 및 사이버 보안 참조). 그리고 공적 자금과 공적 데이터이므로, 이 분야는 코드가 개방적이고 검사 가능한 표준에 맞춰 — 때로는 문자 그대로 공개적으로 — 만들어지기를 점점 더 기대한다. 따라서 일하는 방식은 사적인 엔지니어링 문제가 아니다. 환자, 임상의, 대중에게 책임을 진다.

핵심 개념#

DevOps. DevOps는 소프트웨어를 만드는 개발자와 운영하는 운영 직원 사이의 전통적인 벽을 허무는 문화이자 실천의 집합이다. 별도의 팀에 "코드를 벽 너머로 던지는" 대신, 같은 사람들이 설계부터 라이브 운영까지 서비스의 소유권을 공유하며 자동화와 빠른 피드백의 지원을 받는다. 이는 무엇보다 일하는 방식 — 공유된 책임, 비난 없는 학습, 작은 배치 — 이며 도구가 가능하게 하지만, 사서 쓰는 도구가 아니다.

지속적 통합과 지속적 전달 (CI/CD). 지속적 통합(CI)은 모든 개발자가 작은 변경을 공유 메인 브랜치에 자주 병합하고, 각각이 자동화된 빌드와 시험 실행을 촉발하여 문제가 몇 분 안에 드러남을 뜻한다. 지속적 전달(CD)은 이를 확장하여 소프트웨어가 항상 릴리스 가능한 상태에 있고 자동화되고 반복 가능한 파이프라인을 통해 프로덕션에 배포될 수 있게 한다. 지속적 배포는 한 걸음 더 나아가 파이프라인을 통과한 모든 변경을 자동으로 릴리스한다. 시험은 파이프라인 관문의 실체이며 주제 3.7 — 테스트 및 품질 보증에서 깊이 다룬다.

트렁크 기반 개발과 작고 되돌릴 수 있는 릴리스. 트렁크 기반 개발은 모두가 버전 관리의 단일 메인 라인 가까이에서 일하며 하루에 여러 번 통합하고, 서로 표류하다 고통스럽게 병합되는 오래 사는 브랜치를 키우지 않는 것이다. 짝이 되는 규율은 작고, 자주, 독립적으로 되돌릴 수 있는 변경을 출시하는 것이다. 작은 변경은 검토하기 쉽고, 시험하기 쉬우며, 결정적으로 임상 시스템에서는 문제가 생겼을 때 깔끔하게 롤백하기 쉽다.

코드형 인프라 (IaC). 서버를 손으로 구성하는 대신, 버전 관리 아래 기계가 읽을 수 있는 파일로 인프라를 정의한다. 환경은 재현 가능하고, 검토 가능하며, 감사 가능해진다. 동일하게 다시 구축할 수 있고, 누가 무엇을 왜 바꿨는지 볼 수 있으며, 시험과 프로덕션이 일치함을 증명할 수 있다. 이것은 신뢰할 수 있는 환경의 토대다(주제 4.0 — 기술 아키텍처, 클라우드 및 레거시 참조).

플랫폼 엔지니어링과 개발자 경험. 플랫폼 엔지니어링은 딜리버리 팀이 의존하는 내부 도구, 파이프라인, 환경을 팀을 사용자로 하는 제품으로 다룬다. 잘 만든 내부 플랫폼은 팀에게 "포장도로", 곧 안전한 기본값, 사전 승인된 패턴, 원클릭 배포를 제공하여, 각자가 준수를 재발명하지 않고도 빠르고 안전하게 움직이게 한다. 좋은 개발자 경험은 방종이 아니라 안전한 길을 쉬운 길로 만드는 방법이다.

DORA 지표. DevOps Research and Assessment(DORA)는 고성과 팀을 구별하는 네 가지 척도를 식별했다. 배포 빈도(얼마나 자주 릴리스하는가), 변경 리드 타임(커밋에서 프로덕션까지 얼마나 걸리는가), 변경 실패율(변경의 몇 퍼센트가 문제를 일으키는가), 서비스 복구 시간(얼마나 빨리 복구하는가)이다. 이들은 함께 속도와 안정성이 함께 오른다는 것, 곧 가장 자주 배포하는 팀이 가장 적게 실패하고 가장 빨리 복구한다는 것을 보여 준다.

"만든 사람이 운영한다," SRE, 관측 가능성. Amazon에서 대중화된 "만든 사람이 운영한다(you build it, you run it)"는 서비스를 작성한 팀이 그것을 운영하고, 호출기를 들고, 그 실패를 느낀다는 뜻으로, 엔지니어링 선택과 운영 현실 사이의 피드백 고리를 닫는다(주제 3.8 — 서비스 관리 및 라이브 운영 참조). 사이트 신뢰성 엔지니어링(SRE)은 명시적 신뢰성 목표와 오류 예산으로 운영에 엔지니어링을 적용하는 구체적 구현이다. 관측 가능성 — 시스템의 출력(지표, 로그, 트레이스)으로부터 내부 상태를 이해하는 능력 — 은 환자와 임상의가 알기 전에 문제를 탐지하고 진단하게 해 준다.

안전한 소프트웨어 공급망. 현대 소프트웨어는 많은 제3자 구성 요소와 의존성으로 조립된다. 공급망 공격은 신뢰받는 구성 요소를 악용해 그에 의존하는 모든 것을 침해한다. 의존성을 관리하고, 알려진 취약점을 스캔하고, 소프트웨어 자재 명세서를 유지하는 것은 선택적 보안 덤이 아니라 핵심 엔지니어링 위생이다.

공개적으로 코딩하기와 오픈소스 소프트웨어. GDS Service Standard와 NHS Service Standard에 표현된 영국 정부 정책은 팀이 새 소스 코드를 기본적으로 공개하고 개방형 표준을 사용하도록 요청한다. 공적 자금을 받은 보건 소프트웨어의 경우 이는 환자 데이터와 진정한 비밀이 공개 저장소에서 철저히 배제되는 한, 감시, 재사용, 신뢰를 개선한다.

모범 사례#

  1. 서비스를 만들기 전에 CI/CD 파이프라인을 구축하라. 첫 주부터 자동화된 빌드, 시험, 배포를 확립하여 모든 변경이 프로덕션으로 가는 같은 반복 가능하고 감사 가능한 경로를 흐르게 하라. 파이프라인은 임상 안전, 보안, 접근성 관문이 자동화된 점검으로 사는 곳이며, 정확히 무엇이 언제 배포되었는지에 대한 문서화되고 변조가 드러나는 기록을 준다. 규제 시스템에서 이 감사 추적은 간접비가 아니라 임상 안전 케이스를 위한 증거다(주제 1.6 — 임상 안전 및 위험 관리 참조).

  2. 작고, 잦고, 되돌릴 수 있는 변경을 배포하라. 가끔의 큰 릴리스보다 많은 작은 릴리스를 선호하고, 모든 변경을 빠르게 롤백하거나 비활성화할 수 있게 설계하라. 실패한 아주 작은 변경은 이해하고 되돌리기 쉽지만, 실패한 분기별 대형 릴리스는 용의자가 백 개인 임상 사건이다. 기능 플래그, 카나리 릴리스, 블루-그린 배포 같은 기법은 변경을 점진적으로 노출하고 즉시 거둘 수 있게 하여, 배포를 두려운 사건에서 일상적이고 극적이지 않은 행위로 바꾼다.

  3. 빠르고 깔끔한 롤백을 일급 안전 통제로 만들라. 소방 훈련을 하듯 롤백을 연습하고, 실제로 얼마나 걸리는지 측정하라. 임상 시스템에서 가장 가치 있는 단일 운영 역량은 변경이 해를 끼칠 때 몇 분 안에 알려진 양호한 상태로 돌아가는 능력이다. 시험된 적 없는 롤백은 통제가 아니라 희망이다. 작동함을 증명하고 계속 증명하라.

  4. 인프라와 구성을 코드로 다루라. 환경, 네트워킹, 구성을 선언적으로, 버전 관리 아래 정의하고 자동으로 프로비저닝하라. 이는 재현 가능한 환경, 동료 검토를 받은 변경, 실패나 재해 후 다시 구축하는 능력을 준다(주제 3.9 — 업무 연속성 및 재해 복구 참조). 수작업으로 조율한 "스노플레이크" 서버는 반복할 수 없고, 문서화되어 있지 않으며, "시험에서는 됐는데 프로덕션에서는 안 된다"의 흔한 원인이다.

  5. DORA 지표를 사람의 순위가 아니라 정직한 대화에 사용하라. 배포 빈도, 리드 타임, 변경 실패율, 복구 시간을 시스템 수준의 건강 신호로 추적하고, 더 빠르고 더 안전한 쪽으로 함께 움직이는지 지켜보라. 이를 개인이나 팀의 순위표로 바꾸려는 것에 저항하라. DORA의 저자들 스스로 이를 경고하는데, 조작과 숨겨진 위험을 낳기 때문이다. 올바른 사용은 진단적이다. 오르는 변경 실패율은 이사회가 듣고 싶어 해야 할, 시험 범위나 배치 크기에 대한 무언가를 말해 주고 있다.

  6. 관측 가능성이 뒷받침하는 "만든 사람이 운영한다"를 채택하라. 딜리버리 팀에 대기 근무 책임을 포함해 프로덕션 서비스에 대한 진정한 소유권을 주어, 설계 선택을 하는 사람들이 운영상의 결과와 함께 살게 하라. 지표, 구조화된 로그, 트레이스와 사용자 영향에 연결된 의미 있는 경보로 관측 가능성을 뒷받침하여 팀이 임상의가 보고하기 전에 문제를 찾게 하라. 이는 시간이 지나며 엔지니어링 선택을 개선하는 피드백 고리를 닫고 서비스 관리(주제 3.8)와 직접 이어진다.

  7. 소프트웨어 공급망을 지속적으로 보호하라. 의존성 목록을 유지하고, 알려진 취약점을 자동으로 스캔하고, 버전을 고정하고 검증하며, 소프트웨어 자재 명세서를 유지하여 다음에 널리 알려진 결함이 나왔을 때 몇 시간 안에 "우리가 영향받는가?"에 답할 수 있게 하라. 누가 그리고 무엇이 프로덕션에 푸시할 수 있는지 제한하고, 비밀과 자격 증명을 철저히 보호하라(주제 4.2 — 신원 및 접근 관리 참조). 보건·돌봄에서 침해된 의존성은 기밀 환자 데이터로 가는 경로이므로, 공급망 위생은 환자 안전과 정보 거버넌스 업무다.

  8. 엔지니어링 표준을 정하고 시행하며, 기술 부채를 의도적으로 관리하라. 코딩 표준, 자동화된 린팅, 코드 리뷰, 명확한 "완료의 정의"에 합의하여 품질이 나중에 검사되는 것이 아니라 내장되게 하라. 기술 부채를 명시적으로 추적하고 계획된 업무로 갚으라. 임상 시스템에서 관리되지 않은 부채는 모든 미래 변경의 비용과 위험을 소리 없이 높이기 때문이다. 표준은 코드를 다음 엔지니어에게, 그리고 그것을 읽어야 할 수 있는 감사관, 안전 책임자, 오픈소스 검토자에게도 읽히게 만든다.

  9. 안전하게 가능한 곳에서는 공개적으로 코딩하라. 새 소스 코드를 기본적으로 공개하고 개방형 표준을 재사용하라는 GDS와 NHS의 기대를 따르되, 규율 있는 비밀 관리로 환자 데이터와 비밀을 공개 저장소에서 엄격히 배제하라. 공개된 코드는 품질과 보안을 개선하는 감시를 불러들이고, 현금이 빠듯한 시스템 전반의 재사용을 가능하게 하며, 공적 자금을 쓰는 소프트웨어가 주장하는 대로 하고 있다는 대중의 신뢰를 쌓는다. 코드를 진정으로 공개할 수 없는 곳(예를 들어 일부 보안 민감 구성 요소)에서는 습관적으로 비공개로 기본 설정하는 대신 이유를 문서화하라.

팀과 논의할 질문#

  1. 임상 시스템을 더 자주 바꾸는 것이 더 안전하게 만든다고 실제로 믿는가 — 그리고 우리 행동이 그 믿음과 일치하는가? 이 질문은 팀이 증거와 본능 사이의 간극과 마주하게 한다. DORA 연구는 작은 변경을 자주 배포하는 팀이 더 낮은 실패율을 갖고 더 빨리 복구한다고 분명히 보여 주지만, 많은 보건 조직은 여전히 안전이라는 이름으로 변경을 드문 관문 많은 릴리스로 묶어, 의도치 않게 각각을 더 크고 위험하게 만든다. 변경 자문 프로세스가 진정으로 위험을 줄이는 곳과 단지 지연을 더해 팀을 빅뱅 릴리스 쪽으로 밀어붙이는 곳을 토론하라. 최근 몇 번의 사건을 정직하게 보라. 잦은 작은 변경 때문이었는가, 아니면 드문 큰 변경과 패치되지 않은 방치 때문이었는가? 롤백 능력이 실제로 있고 연습되었는지 생각하라. 잦은 변경의 논거는 그것을 빨리 되돌릴 수 있다는 데 전적으로 달려 있기 때문이다. 좋은 답은 이념적이지 않다. 자동화된 시험, 카나리 릴리스, 시험된 롤백처럼, 임상 안전 및 보증 의무를 충족하면서 동시에 변경 빈도를 높일 수 있게 해 줄 구체적 통제를 명명한다.

  2. 새벽 2시에 프로덕션에서 우리 서비스를 누가 운영하며, 그것이 엔지니어링 선택에 대해 무엇을 말해 주는가? "만든 사람이 운영한다"는 지지하기는 쉽고 살아 내기는 어렵다. 이 질문은 아키텍처와 딜리버리 결정을 내리는 사람들이 운영상의 결과를 실제로 느끼는지, 아니면 고통이 근본 원인을 고칠 수 없는 별도의 운영이나 서비스 데스크 팀에 전가되는지 드러낸다. 관측 가능성의 상태를 탐구하라. 공유 진료 기록이 느려질 때, 대시보드와 경보로 알게 되는가, 화난 임상의로부터 알게 되는가? 인간적 비용도 논의하라. 대기 근무는 인간적이고, 재원이 있고, 공유되어야 하며, 그렇지 않으면 소진과 유지의 문제가 되고, 인력이 부족한 NHS에서 이는 심각한 위험이다(주제 7.2 — 인력 계획 참조). 전체 팀 소유권과 일부 소규모 조직과 공급업체가 안정적으로 운영하려면 공유 플랫폼이나 관리형 서비스가 정말 필요하다는 현실 사이에는 진정한 상충 관계가 있다. 강한 답은 운영 책임을 설계로 되돌려 연결한다. 만드는 일과 운영하는 일 사이의 피드백 고리가 어디서 끊겼는지, 엔지니어링 선택이 라이브 운영의 현실에 의해 정보를 받도록 무엇을 바꿀지 식별한다.

  3. 우리 코드와 엔지니어링 실천 중 공개되어도 견딜 수 있는 것은 얼마나 되며 — 그 답이 무엇을 드러내는가? 정부와 NHS 정책은 팀이 기본적으로 공개적으로 코딩하도록 요청하며, 이 질문은 완전한 개방이 아직 불가능한 곳에서도 그 렌즈를 진단으로 사용한다. 저장소를 공개한다는 전망이 불안을 일으킨다면, 정확히 왜인지 물으라. 하드코딩된 비밀, 내장된 환자 데이터, 없는 시험, 문서화되지 않은 결정, 아니면 단순히 낯섦인가? 그 각각은 비공개로 두는 것이 해결하지 않고 숨길 뿐인, 실제 엔지니어링 품질이나 정보 거버넌스 문제다. 진정한 제약 — 일부 보안 민감 코드는 비공개로 남아야 하고, 비밀 관리를 제대로 하는 것은 전제 조건이다 — 을 감시, 현금이 빠듯한 시스템 전반의 재사용, 보건 소프트웨어 지출이 어떻게 쓰이는지에 대한 대중의 신뢰의 이점과 견주어 토론하라. 공격자보다 먼저 외부의 눈이 결함을 찾는 것의 평판적, 안전적 가치를 생각하라. 좋고 정직한 답은 방어 가능하고 문서화된 이유로 비공개인 코드와 습관이나 창피함 때문에 비공개인 코드를 구별하고, 어느 쪽이든 근본적인 품질과 위생 문제를 고치겠다고 약속한다.

  4. 일반적인 의존성의 널리 알려진 취약점이 내일 아침 발표된다면, "우리가 영향받는가, 그리고 어디서?"에 답하는 데 얼마나 걸릴까? 이 질문은 Log4j 유형의 결함처럼, 추상적 위험을 당일의 비상으로 바꾸는 업계 전체의 사건을 이용해 공급망 위생이 실제 역량인지 열망인지 시험한다. 정직한 답은 의존성의 정확한 목록과 소프트웨어 자재 명세서를 유지하고 있는지, 아니면 저장소를 며칠 동안 grep하고 스스로도 모를 수 있는 공급업체에 물으며 보낼지에 달려 있다. 소프트웨어의 얼마나 많은 부분이 제3자 및 오픈소스 구성 요소로 조립되는지, 그 표면 중 자동 스캔으로 모니터링하는 것과 가끔의 수동 점검에 맡기는 것이 얼마인지 탐구하라. 제3자와 공급업체 차원도 논의하라. 보건·돌봄에서는 자산 대부분이 만든 것이 아니라 산 것이고, 공급업체 제품의 침해된 의존성은 직접 통제하지 못하는 기밀 환자 데이터로 가는 경로이기 때문이다(주제 1.7 — 정보 거버넌스, 데이터 보호 및 사이버 보안 참조). 파이프라인과 프로덕션 푸시 권한이 독이 든 구성 요소가 조용히 출시되지 못할 만큼 촘촘한지 생각하라. 강한 답은 몇 시간 단위로 측정된 현실적인 응답 시간을 명명하고, 그것을 가능하게 하는 구체적 도구와 목록을 가리키며, 특히 공급업체가 제공하는 부분처럼 현재 가시성이 약한 자산의 부분에 대해 솔직하다.

  5. 우리의 엔지니어링 지표는 진실을 말해 주는가, 아니면 조용히 사람들이 위를 향해 관리하는 성과 목표가 되었는가? DORA 지표는 정직한 시스템 수준의 신호일 때만 유용하며, 이 질문은 우리의 지표가 조직의 유인과 접촉하고도 살아남았는지 탐색한다. 굿하트의 법칙은 가차 없다. 배포 빈도나 변경 실패율이 팀이 평가받는 숫자가 되는 순간, 사람들은 근본 현실이 아니라 숫자를 최적화한다. 빈도를 부풀리려고 배포를 쪼개거나 실패로 세어지지 않도록 사건을 조용히 재분류한다. 누가 이 지표를 보며 왜인지, 시험 범위나 배치 크기에 대한 투자를 촉발하는 진단적 용도로 쓰이는지, 조작과 숨겨진 위험을 낳는 순위표로 쓰이는지 토론하라. 반대편도 생각하라. 아무것도 측정하지 않고 일화에 의존하는 팀은 오르는 실패율이 임상 사건이 될 때까지 보이지 않는다. 이사회의 정당한 보증 필요와 가장 유용한 지표가 팀이 정직하게 보고하기 안전하다고 느끼는 지표라는 사실 사이에는 진정한 긴장이 있다. 좋은 답은 측정이 불편한 진실을 일찍 드러내고 숨기는 사람들에게 보상하지 않도록 어떻게 구성되고 거버넌스되는지 설명한다.

  6. 마지막으로 의도적으로 기술 부채를 갚은 것은 언제이며, 임상 시스템에서 "충분히 좋은" 엔지니어링이 무엇을 뜻하는지 어떻게 결정하는가? 임상 시스템의 기술 부채는 정돈의 문제가 아니다. 모든 미래 변경의 비용과 위험을 소리 없이 높여서, 하루 걸려야 할 수정이 2주가 걸리고 아무도 리팩터링할 엄두를 못 내는 코드를 건드리게 한다. 이 질문은 팀이 부채를 눈에 보이는 계획된 업무로 관리하는지 무언가 고장 날 때까지 쌓아 두기만 하는지, 코드 리뷰, 린팅, 명확한 완료의 정의 같은 엔지니어링 표준이 진정으로 시행되는지 딜리버리 압박 아래 면제되는지 마주하게 한다. 서비스가 지금 필요로 하는 기능을 출시하는 것과 나중에 시스템을 안전하게 바꿀 수 있게 하는 내부 품질을 유지하는 것 사이의 실제 상충 관계를 탐구하라. 보건·돌봄에서는 둘 다 정당하고 균형은 구호가 아니라 판단이기 때문이다. 표준이 코드를 다음 엔지니어뿐 아니라 그것을 읽어야 할 수 있는 감사관, 임상 안전 책임자, 오픈소스 검토자에게도 읽히게 만드는 방법을 논의하라. 부채를 볼 수는 있는지 생각하라. 이름이 붙고 추적되는가, 아니면 어느 모듈이 무서운지에 대한 부족의 지식인가? 정직한 답은 실제로 이루어진 구체적이고 재원이 있는 시정과, 규제 시스템이 요구하는 품질 기준에 대한 공유되고 방어 가능한 정의를 가리킨다.

실제 사례: 보건·돌봄 예시#

한 통합 돌봄 시스템(ICS)이 긴급 지역사회 돌봄 의뢰를 올바른 팀으로 보내는 공유 "단일 접근 창구" 서비스를 운영한다. 첫 2년 동안 서비스는 대략 분기에 한 번 수작업으로 배포되었다. 개발자가 금요일 늦게 수작업 단계의 위키 페이지를 따랐고, 각 릴리스는 긴장된 총동원 행사였다. 의뢰 라우팅 버그가 드러났을 때 — 복합 필요 의뢰를 가끔 엉뚱한 팀으로 보냈다 — 수정은 다음 릴리스 창구를 기다리며 6주 동안 대기열에 앉아 있었고, 임상의는 수작업 우회책으로 위험을 관리했다.

새 엔지니어링 리드는 이를 단순한 효율 문제가 아니라 임상 안전 문제로 재구성한다. 팀은 CI/CD 파이프라인을 도입한다. 모든 변경은 작고, 동료 검토를 받으며, 자동으로 빌드되고 시험되며, 접근성 및 보안 점검과 파이프라인 관문으로 코드화된 임상 안전 승인 단계가 위해 요인 로그를 위한 감사 가능한 기록을 만든다. 인프라는 코드로 옮겨져 시험과 프로덕션 환경이 마침내 일치한다. 배포는 분기별에서 주 몇 회로 바뀌고, 먼저 단일 지역에 카나리로 릴리스되며, 시험된 롤백이 마지막으로 알려진 양호한 상태로 5분 안에 되돌린다.

여섯 달 뒤 DORA 지표가 이사회에 쉬운 말로 이야기를 들려준다. 수정의 리드 타임은 6주에서 하루 미만으로 줄었고, 배포 빈도는 열 배로 올랐으며, 변경이 이제 작고 관측 가능하기 때문에 변경 실패율은 떨어졌다. 미묘한 라우팅 오류가 다시 나타나자, 관측 가능성 대시보드가 몇 분 안에 이상을 표시하고, 팀은 어떤 의뢰도 잘못 보내지기 전에 롤백하고, 다음 날 아침 수정을 출시하며, 비난 없는 사후 검토를 기록한다. 팀은 또 민감하지 않은 라우팅 규칙 엔진을 NHS Service Standard에 따라 오픈소스로 공개하고, 이웃 ICS가 이를 재사용한다. 시스템을 더 자주 바꾼 것이 시스템을 눈에 띄게 더 안전하게 만들었다.

부문별 관점#

스타트업#

디지털 보건 스타트업은 협상할 레거시 운영 팀이 없으므로 첫날부터 현대적 엔지니어링 실천을 채택할 수 있다. 트렁크 기반 개발, CI/CD, 코드형 인프라는 작은 그린필드 팀에서는 사실상 공짜 기본값이며, 이는 진정한 이점이다. 위험은 "빠르게 움직이라"가 보건이 요구하는 규율을 조용히 떨어뜨리는 것이다. 자동화된 시험, 시험된 롤백, 비밀 관리, 의존성 스캔은 아직 지켜보는 규제 기관이 없을 때 마찰처럼 느껴진다. 창업자는 임상 안전과 공급망 의무가 회사 규모와 무관하게 붙고, 유출된 환자 데이터셋 하나나 관리되지 않은 의존성 하나가 회사를 끝낼 수 있음을 인식해야 한다. 실용적인 길은 관리형 클라우드 플랫폼과 작고 의견이 분명한 "포장도로"에 기대어, 아직 감당할 수 없는 플랫폼 그룹을 구축하지 않고도 아주 작은 팀이 기본으로 안전을 얻는 것이다.

소규모 사업체#

확립된 소규모 제공자나 공급업체 — 일반의 진료소, 지역 약국, 요양원, 단일 사업장 클리닉, 또는 매출 이전 단계를 지난 소규모 보건 기술 업체 — 는 보통 실제 환자와 실제 운영이 있지만 파이프라인, 관측 가능성, 대기 근무를 운영할 전담 엔지니어링이나 IT 기능이 없다. 대부분의 그런 조직에게 엔지니어링 우수성의 실용적 형태는 만들기보다 잘 사는 것이다. 자체 DevOps 규율을 점검할 수 있는 공급업체와 관리형 플랫폼을 고르고, 자동 업데이트, 시험된 백업, 의존성 패치를 희망이 아니라 계약상 기대로 만들라. 소규모 업체가 실제로 소프트웨어를 작성하는 곳에서는, 관리형 클라우드 플랫폼에 잘 구성된 하나의 CI/CD 파이프라인, 자동화된 의존성 스캔, 저장소 밖에 보관한 비밀이 린 팀이 지속할 수 있는 비용으로 안전 이점의 대부분을 준다. 함정은 작은 규모가 임상 안전, 보안, 정보 거버넌스의 기준을 낮춘다고 가정하는 것이다. 그렇지 않으며, 패치되지 않은 의존성이나 잘못된 수작업 배포는 임상의 두 명의 진료소에서도 국가 기관에서만큼 확실히 환자를 해친다. 현실적인 목표는 좋은 플랫폼과 좋은 공급업체에서 상속한 기본 안전이며, 진료소의 한정된 주의는 그 기본값이 실제로 켜져 있는지 확인하는 데 쓰는 것이다.

대기업#

대형 NHS 트러스트나 주요 보건 기술 공급업체는 플랫폼 엔지니어링, 관측 가능성, "만든 사람이 운영한다"를 제대로 할 자원이 있지만, 레거시 시스템, 사일로화된 개발-운영 팀, 더 느린 시대를 위해 만들어진 변경 자문 프로세스에 발목이 잡힌다. 특징적인 실패는 위험을 통제하려다 두려워하는 잦은 작은 릴리스보다 더 위험한 큰 배치 릴리스를 강제하는 무거운 변경 위원회다. 기회는 준수, 보안, 임상 안전 관문을 포장도로에 구워 넣는 내부 개발자 플랫폼에 투자하여, 수십 개 팀이 각자 협상하지 않고 좋은 실천을 상속하게 하는 것이다. 여기서 규모는 양날의 검이다. 나쁜 배포의 영향 범위가 엄청나게 크고, 바로 그 때문에 자동화, 카나리 릴리스, 시험된 롤백은 선택이 아니라 필수다.

정부#

NHS England나 지방분권 보건 부처 같은 국가 기관은 다른 이들이 따르는 표준 — NHS와 GDS Service Standard, 지출 통제, 공개적으로 코딩하라는 기대 — 을 정하고, 소프트웨어가 어떻게 만들어지고 운영되는지에 대해 의회와 대중에게 책임을 진다. 그 엔지니어링 선택은 시스템 전체로 파급된다. 잘 운영되는 국가 플랫폼, 공개된 오픈소스 구성 요소, 명확한 공급망 지침은 모든 트러스트와 공급업체의 바닥을 높인다. 제약은 실재한다. 다년 재원, 조달 규칙, 국가 데이터의 막대한 규모와 민감성은 배포 주기가 스타트업보다 신중함을 뜻한다. 정부의 렌즈는 모범적인 투명성과 재사용을 국가적으로 중요한 시스템의 보안과 균형 잡고, 무엇을 공개하고 무엇을 보호할지 의도적으로 결정하며, 어느 쪽이든 추론을 문서화해야 한다.

흔한 실패 양상#

  • "변경은 위험" 마비. 안전하다고 느끼려고 드물게 배포하여 크고, 위험하고, 잘 이해되지 않은 릴리스와 패치되지 않은 방치를 낳는다. 해독제: 시험된 롤백이 있는 작고, 잦고, 되돌릴 수 있는 변경.
  • 개발과 운영 사이의 벽. 개발자가 근본 원인을 고칠 수 없는 별도의 운영 팀에 "코드를 벽 너머로 던지며", 아무도 전체 고리를 소유하지 않는다. 해독제: 공유된 소유권과 인간적으로 지원되는 "만든 사람이 운영한다".
  • 수작업, 스노플레이크 배포. 릴리스가 한 사람과 위키 페이지에 의존하고, 환경이 표류하며, "시험에서는 됐는데 프로덕션에서 깨진다"가 일상이다. 해독제: CI/CD와 코드형 인프라.
  • 몽둥이로서의 지표. DORA 숫자가 팀의 순위를 매기는 데 쓰여 조작과 숨겨진 위험을 낳는다. 해독제: DORA 자체의 지침대로 시스템 수준의 진단으로 사용하라.
  • 경보에 눈먼 운영. 관측 가능성이 없어 환자와 임상의가 실패를 먼저 발견한다. 해독제: 지표, 로그, 트레이스, 사용자 영향 경보.
  • 방치된 공급망. 패치되지 않은 의존성과 스캔되지 않은 구성 요소가 침해가 된다. 해독제: 지속적 스캔, 소프트웨어 자재 명세서, 보호된 파이프라인.
  • 우발적 노출. 부주의하게 공개 코딩하여 비밀이나 환자 데이터를 유출한다. 해독제: 기본 비공개로 후퇴하는 것이 아니라 철저한 비밀 관리와 공개 전 스캔.

성숙도 모델#

차원 시작 발전 표준화 관리 조율
빌드와 릴리스 수작업, 드문, 한 사람의 배포 부분 자동화; 릴리스는 여전히 묶이고 두려움 자동화된 시험과 관문이 있는 CI/CD 파이프라인 배포 빈도와 리드 타임을 목표에 대해 추적; 파이프라인 관문을 보증하고 감사 작은 변경의 지속적 전달; 배포는 일상
변경과 롤백 롤백 계획 없음; 실패가 지속 롤백이 종이 위에 있고 거의 시험되지 않음 시험된 롤백; 카나리/기능 플래그 릴리스 롤백 시간을 측정하고 보고; 변경 실패율을 임계에 대해 거버넌스 증명되고 훈련된 임상 안전 통제로서의 빠른 롤백
인프라 손으로 구성한 스노플레이크 서버 일부 스크립트; 환경이 표류 코드형 인프라, 버전 관리 표류 탐지와 코드형 준수를 시행; 환경 동등성을 적극 모니터링 완전히 재현 가능하고, 셀프서비스이며, 재해 복구 가능
운영과 관측 별도의 운영 팀; 사용자가 실패를 발견 기본 모니터링; 사후 대응적 불 끄기 팀이 자기 서비스를 운영; 지표, 로그, 트레이스, 경보 SLO와 오류 예산을 추적; 경보를 사용자 영향에 맞춰 조율하고 목표에 대해 검토 SLO와 비난 없는 학습이 있는 "만든 사람이 운영한다"
공급망과 개방성 의존성이 관리되지 않음; 모든 코드가 비공개 가끔의 수동 스캔; 개방성은 임시 자동화된 스캔, SBOM; 안전한 곳에서 공개 취약점 노출을 측정하고 SLA까지 시정; 공급망 통제를 보증 지속적 공급망 보증; 재사용과 함께 기본 공개

체크리스트#

  • CI/CD 파이프라인이 안전/보안/접근성 관문이 코드화된 하나의 감사 가능한 경로로 모든 변경을 빌드, 시험, 배포한다.
  • 변경이 작고, 잦고, 독립적으로 되돌릴 수 있다(기능 플래그, 카나리 또는 블루-그린 릴리스).
  • 알려진 양호한 상태로의 롤백이 정기적으로 시험되고 문서화된 짧은 시간 안에 완료된다.
  • 인프라와 구성이 버전 관리되는 코드로 정의되고 시험과 프로덕션 환경이 일치한다.
  • 네 가지 DORA 지표가 개인이나 팀의 순위를 매기는 데 쓰이지 않고 시스템 수준의 신호로 추적된다.
  • 딜리버리 팀이 인간적이고 재원이 있는 대기 근무와 의미 있는 관측 가능성(지표, 로그, 트레이스, 경보)과 함께 프로덕션 서비스를 소유한다.
  • 의존성이 목록화되고 자동으로 스캔되며, 소프트웨어 자재 명세서가 존재하고 비밀이 보호된다.
  • 엔지니어링 표준, 코드 리뷰, 완료의 정의가 합의되어 있으며, 기술 부채가 추적되고 계획된 업무로 갚아진다.
  • 새 소스 코드가 안전한 곳에서 기본적으로 공개되며, 환자 데이터나 비밀이 노출되지 않도록 철저히 점검한다.
  • 새 엔지니어, 감사관, 안전 책임자가 무엇이 왜 운영되는지 이해할 수 있도록 엔지니어링 실천이 문서화된다(주제 10.3 참조).

주요 출처#

  • Nicole Forsgren, Jez Humble & Gene Kim, Accelerate: The Science of Lean Software and Development and DevOps — DORA 연구와 네 가지 핵심 지표.
  • DORA (DevOps Research and Assessment) — 연례 State of DevOps 보고서와 역량 카탈로그 — dora.dev.
  • Jez Humble & David Farley, Continuous Delivery — 배포 파이프라인과 릴리스 자동화.
  • Betsy Beyer et al. (편), Site Reliability Engineering — 프로덕션 시스템 운영에 관한 Google의 SRE 책.
  • NHS England — NHS Service Standard와 NHS Digital Service Manual (공개적으로 코딩하기와 개방형 표준 포함).
  • GOV.UK Service Manual / Government Service Standard (GDS) — "새 소스 코드를 공개하라", 지속적 전달, 서비스 운영.
  • National Cyber Security Centre (NCSC) — 안전한 소프트웨어 개발과 공급망 보안에 관한 지침.
  • NHS England — 임상 위험 관리 표준 DCB0129와 DCB0160 (임상 안전 케이스의 일부로서의 엔지니어링 변경).

참고문헌#

  1. DevOps — Wikipedia — https://en.wikipedia.org/wiki/DevOps
  2. CI/CD — Wikipedia — https://en.wikipedia.org/wiki/CI/CD
  3. Continuous integration — Wikipedia — https://en.wikipedia.org/wiki/Continuous_integration
  4. Continuous delivery — Wikipedia — https://en.wikipedia.org/wiki/Continuous_delivery
  5. Version control — Wikipedia — https://en.wikipedia.org/wiki/Version_control
  6. Infrastructure as code — Wikipedia — https://en.wikipedia.org/wiki/Infrastructure_as_code
  7. Platform engineering — Wikipedia — https://en.wikipedia.org/wiki/Platform_engineering
  8. DevOps Research and Assessment (DORA) — Wikipedia — https://en.wikipedia.org/wiki/DevOps_Research_and_Assessment
  9. Site reliability engineering — Wikipedia — https://en.wikipedia.org/wiki/Site_reliability_engineering
  10. Observability (software) — Wikipedia — https://en.wikipedia.org/wiki/Observability_(software)
  11. Supply chain attack — Wikipedia — https://en.wikipedia.org/wiki/Supply_chain_attack
  12. Open-source software — Wikipedia — https://en.wikipedia.org/wiki/Open-source_software
  13. Accelerate: The Science of Lean Software and DevOps — Nicole Forsgren, Jez Humble & Gene Kim (IT Revolution) — https://itrevolution.com/product/accelerate/
  14. DORA — DevOps Research and Assessment — Google Cloud / DORA — https://dora.dev/
  15. Continuous Delivery — Jez Humble & David Farley — https://continuousdelivery.com/
  16. Site Reliability Engineering — Google (O'Reilly) — https://sre.google/books/
  17. NHS Service Standard — NHS England — https://service-manual.nhs.uk/standards-and-technology/service-standard-points
  18. Making source code open and reusable — Government Digital Service, GOV.UK Service Manual — https://www.gov.uk/service-manual/technology/making-source-code-open-and-reusable
  19. Secure software development and supply chain security — National Cyber Security Centre (NCSC) — https://www.ncsc.gov.uk/collection/developers-collection
  20. Clinical risk management standards DCB0129 and DCB0160 — NHS England — https://digital.nhs.uk/services/clinical-safety

GitHub에서 이 페이지 편집 — 이 책이 신뢰할 수 있는 기준이며, 이 사이트는 그것을 보여 줄 뿐입니다.