Software Engineering 10

SCM의 기능 형상 감사(Functional Configuration Audit, FCA)

기능 형상 감사(FCA)는 소프트웨어나 시스템이 요구된 기능과 성능을 충실히 구현했는지 검증하는 감사 활동입니다. 즉, 요구사항(Configuration requirements)을 기준으로 실제 구현된 형상(as-built configuration)이 요구 사항을 충족하는지를 평가하는 과정입니다.FCA의 목적 🎯구현된 제품이나 시스템이 요구된 기능적 요구사항을 충분히 만족하는지 확증요구사항 기반의 테스트 수행 결과와 산출물을 검토하여 누락이나 오류 여부 진단제품의 기능 완성도와 적합성을 객관적으로 평가시스템의 기능 및 성능이 설계 의도와 일치하는지 확인하여 품질 보장.FCA 수행 방식 🔍보통 개발 기간 중 수행된 **검증 및 확인 활동의 산출물(예: 테스트 보고서, 검증 결과)**을 재검토하여 감사독..

SCM Audit (소프트웨어 형상 감사)

SCM Audit (소프트웨어 형상 감사) 상세 설명 🔍SCM Audit은 소프트웨어 형상 관리 프로세스에서 매우 중요한 단계로, 소프트웨어 구성 산출물과 프로세스가 계획, 규격, 절차에 맞춰 정확하게 관리되고 있는지를 검증하고 평가하는 활동입니다. 이는 소프트웨어의 품질 보증과 일관성 유지에 핵심 역할을 하며, 개발 과정과 결과물을 객관적이고 체계적으로 점검하는 과정입니다.SCM Audit의 목적 🎯소프트웨어 제품과 프로세스가 규정된 요구사항, 표준, 계획, 절차에 합치되는지 평가소프트웨어 변경이 적절히 승인되고 통제되었는지 확인베이스라인(기준선)의 무결성과 완전성 검증승인되지 않은 변경이 반영되지 않았는지 점검결과적으로 소프트웨어 품질 보증과 신뢰성 향상에 기여.SCM Audit의 주요 종류 🗂..

SCM(SW Configuration Management, 소프트웨어 형상 관리)

SCM(SW Configuration Management, 소프트웨어 형상 관리)은 소프트웨어 개발 및 유지보수 과정에서 소프트웨어 구성 요소(소스 코드, 문서, 설정 파일 등)의 변경을 체계적으로 관리하고 추적하는 일련의 활동 및 관리 프로세스입니다. 이는 개발된 소프트웨어의 일관성, 품질 및 협업 효율성을 높이기 위해 반드시 필요한 관리 기법으로, 단순 버전 관리 이상의 포괄적인 개념입니다.SCM 개념과 정의 📚**소프트웨어 형상 관리(SCM)**는 소프트웨어 개발 생명주기의 모든 산출물(코드, 문서, 구성 요소 등)을 체계적으로 통제하고 변경 사항을 기록·관리하는 프로세스입니다.SCM은 형상 항목(Configuration Item, CI)을 식별, 문서화하고, 변경 제어, 상태 기록, 감사 등 관..

Use After Free(UAF)

Use After Free(UAF)는 프로그램의 동적 메모리 관리 과정에서 발생하는 심각한 메모리 취약점으로, 메모리를 해제한 후에도 해당 메모리 공간을 계속 참조하면서 발생하는 오류입니다. 이로 인해 데이터 손상, 프로그램 크래시, 심지어 임의 코드 실행과 같은 보안상의 큰 문제가 발생할 수 있습니다🛡️.Use After Free란 무엇인가? 💡Use After Free(UAF)는 동적으로 할당된 메모리(Heap)를 free(해제) 한 뒤에도, 이전에 참조하던 포인터를 통해 그 영역을 사용하는 상황에서 발생합니다. 이러한 영역은 다른 데이터로 재할당 되어 있을 수 있으므로, 예기치 않은 동작이나 취약점의 원인이 됩니다.발생 원리 및 메커니즘 🔍동적 메모리(Heap)는 프로그램이 실행되는 동안 필요..

카나리 배포(Canary Deployment)

Canary Deployment(카나리 배포)는 소프트웨어 배포 전략 중 하나로, 새로운 소프트웨어 버전을 전체 사용자에게 한꺼번에 배포하지 않고, 먼저 소수의 사용자 그룹에게만 먼저 배포하여 문제점을 조기에 발견하고 안정성을 검증하는 방식입니다. 이름은 광부들이 유독 가스가 있는지 감지하기 위해 새장에 카나리아를 데려간 데서 유래했습니다. 카나리아가 위험 신호를 먼저 알려주듯, 카나리 배포도 새 버전의 문제를 초기에 포착해 전체 서비스에 영향을 주지 않도록 합니다.카나리 배포 과정소규모 배포: 전체 사용자 중 일부에게만 새로운 버전을 배포합니다. 이 대상 그룹은 무작위 혹은 특정 기준에 따라 선정됩니다.모니터링 및 평가: 배포된 버전의 안정성과 성능, 오류 발생 여부 등을 면밀히 모니터링합니다.점진적 ..

롤링 업데이트(Rolling Update)

롤링 업데이트(Rolling Update)는 소프트웨어 배포 전략 중 하나로, 애플리케이션의 여러 인스턴스를 한꺼번에 모두 교체하는 대신, 일부 인스턴스씩 순차적으로 새로운 버전으로 교체해 나가는 방식을 말합니다. 이렇게 함으로써 서비스의 중단 없이 점진적으로 새로운 버전을 배포할 수 있습니다.롤링 업데이트 개념점진적 배포: 새 버전을 실행하는 인스턴스를 조금씩 늘려 가면서 기존 버전을 점진적으로 줄여 나갑니다.무중단 서비스 유지: 업데이트 도중에도 전체 서비스는 사용자에게 계속 제공됩니다.자동화 및 모니터링: 일반적으로 자동화된 배포 도구와 모니터링 시스템을 통해 각 단계에서 문제 발생 여부를 확인하고, 필요하면 배포를 중단하거나 롤백할 수 있습니다.상세 과정초기 상태: 운영 중인 애플리케이션의 여러 ..

기능 플래그(Feature Flags, 또는 Feature Toggles)

기능 플래그(Feature Flags, 또는 Feature Toggles)는 소프트웨어 개발에서 특정 기능을 동적으로 켜거나 끌 수 있도록 하는 기술입니다. 쉽게 말해, 각 기능에 ‘ON/OFF 스위치’를 달아두어 개발한 기능을 코드 변경이나 전체 앱 재배포 없이도 실시간으로 활성화하거나 비활성화할 수 있게 해줍니다.기능 플래그란 무엇인가?기능 플래그는 애플리케이션 코드 내에 포함된 조건문으로, 특정 기능의 작동 여부를 실행 시점에 결정할 수 있도록 합니다. 예를 들어, 새로운 기능을 아직 완전히 공개하지 않았지만 코드에는 이미 포함된 상태에서, 원하는 시점에 특정 사용자 그룹에게만 기능을 활성화하거나 문제 발생 시 즉시 끌 수 있습니다.기능 플래그의 주요 특징과 장점실시간 기능 제어: 배포 없이 기능 ..

Blue-Green Deployment

Blue-Green Deployment는 소프트웨어 배포 전략 중 하나로 시스템의 가용성을 극대화하고, 배포 중 발생할 수 있는 다운타임과 리스크를 최소화하기 위해 고안된 방식입니다. 이 전략은 두 개의 거의 동일한 운영 환경, 즉 “Blue” 환경과 “Green” 환경을 운영하는 데서 이름이 유래했습니다.Blue-Green Deployment 상세 설명기본 원리Blue-Green Deployment는 두 개의 별도 환경을 유지합니다. 한 환경은 현재 사용자가 접속하는 현재 라이브 환경이며, 다른 하나는 최신 버전의 애플리케이션이 배포되어 테스트 및 준비가 완료된 대기 환경입니다. 두 환경은 동일한 하드웨어와 네트워크 구성, 소프트웨어 구성으로 운영됩니다.현재 환경(Blue): 사용자들이 실제로 접속하고..

플랫폼 엔지니어링(Platform Engineering)

플랫폼 엔지니어링(Platform Engineering)은 현대 소프트웨어 개발과 운영 환경에서 점점 중요한 역할을 담당하고 있는 분야입니다. 다양한 기술과 복잡성이 증가하는 클라우드 네이티브 시대에 개발자들과 운영팀 간의 효율적인 협업과 자동화를 촉진하기 위해 등장한 개념으로, 다방면에서 이해할 수 있도록 상세히 설명하겠습니다.1. 플랫폼 엔지니어링이란 무엇인가?플랫폼 엔지니어링은 조직 내 개발자들이 소프트웨어를 더 빠르고 안정적으로 개발 및 배포할 수 있도록, 개발에 필요한 환경과 도구, 프로세스를 만들고 운영하는 활동입니다. 이를 통해 개발자는 직접 인프라를 다루거나 복잡한 설정을 신경 쓰지 않고 자신들의 핵심 업무인 코딩과 기능 구현에 집중할 수 있습니다.2. 등장 배경기술 환경의 복잡성 증가: ..

Release Process

Release Process 상세 설명Release Process(릴리즈 프로세스)는 소프트웨어의 새로운 버전이나 기능을 사용자에게 안정적으로 전달하기 위한 일련의 체계적 절차입니다. 이 과정은 개발에서 운영까지 전 단계를 아우르며, 품질과 일관성을 보장하는 데 필수적입니다.주요 단계 및 구성요소1. 요구사항 정의 및 분석비즈니스 목표와 사용자 요구를 수집하고, 릴리즈 범위와 목표를 명확히 설정합니다.2. 릴리즈 계획 수립릴리즈 일정, 마일스톤, 책임자, 리스크, 자원 할당 등을 포함한 상세 계획을 수립합니다.모든 이해관계자와의 커뮤니케이션 전략도 이 단계에서 마련됩니다.3. 개발 및 통합기능 개발, 코드 통합, 버전 관리, 빌드 자동화 등이 진행됩니다.효과적인 브랜칭 전략(메인/개발/기능/릴리즈/핫픽스..