정보처리기사

[정보처리기사 요약 12] 디지털 저작권 관리(DRM)와 빌드 자동화(Jenkins, Gradle) 핵심 요약

Hong's_Computer 2026. 3. 4. 22:02
반응형
본문에 오류가 있을 수 있음을 감안하고 봐주시길 바랍니다.
# 문제 풀이 중 오답노트 하면서 나온 내용을 정리한 것

 

소프트웨어 패키징(Software Packaging): 모듈별로 생성된 실행 파일들을 묶어 사용자가 쉽게 설치하고 운영할 수 있도록 배포용 설치 파일을 만드는 과정입니다. 개발자 관점이 아닌 '사용자 편의성'을 중심으로 진행되며 향후 유지보수와 버전 관리를 용이하게 하기 위해 신규 및 변경 소스 코드는 모듈화하여 패키징한다. 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다.

  • 소프트웨어 패키징 작업 순서: 기능 식별 → 모듈화 → 빌드(Build) 진행 → 사용자 환경 분석 → 패키징 및 적용 시험 → 패키징 변경 개선 → 배포(Deployment)

 

 

릴리즈 노트(Release Note): 소프트웨어 개발 과정에서 정리된 배포(Release) 정보를 최종 사용자인 고객과 공유하기 위해 작성하는 공식 문서입니다. 개발팀이 소프트웨어 사양을 정확히 준수했는지 테스트 결과를 확인할 수 있으며 소프트웨어에 포함된 전체 기능, 서비스 내용, 버그 수정 및 개선 사항 등을 사용자에게 명확하게 전달하는 역할이다.

  • 릴리즈 노트 작성 항목
항목 내용
머리말(Header) 문서 이름, 소프트웨어 이름, 릴리즈 버전, 배포 날짜, 문서 버전 등
개요(Overview) 소프트웨어 및 전체 변경 사항에 대한 핵심 요약
목적(Purpose) 해당 릴리즈의 목적 및 새롭게 추가/수정된 기능의 간략한 목록
문제 요약(Issue Summary) 수정된 버그나 추가된 항목에 대한 짧은 설명
재현 항목(Reproduction Steps) 수정된 버그가 발생했던 조건이나 발견 과정 설명
수정/개선 내용(Resolution/Enhancement) 버그 수정 사항 및 기능 개선 내용에 대한 상세 설명
사용자 영향도(User Impact) 업데이트가 사용자의 기존 환경 및 기능 사용에 미칠 수 있는 영향
SW 지원 영향도(SW Support Impact) 다른 응용 프로그램이나 시스템 연동에 미칠 수 있는 영향
노트(Notes) HW/SW 설치, 업그레이드, 공식 문서화에 대한 참고 사항
면책 조항(Disclaimer) 회사 및 소프트웨어와 관련하여 법적으로 참조해야 할 고지 사항
연락처(Contact) 사용자 지원, 버그 리포팅 및 문의 응대를 위한 연락처 정보
  • 릴리즈 노트 작성 순서: 모듈 식별 → 릴리즈 정보 확인 → 릴리즈 노트 개요 작성 → 영향도 체크 → 정식 릴리즈 노트 작성 → 추가 개선 항목 식별

 

 

 

저작권(Copyright): 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한이다.

 

디지털 저작권 관리(DRM: Digital Rights Management): 저작권자가 배포한 디지털 콘텐츠가 의도한 용도로만 사용되도록, 콘텐츠의 생성·유통·이용까지의 전 과정에 걸쳐 적용되는 디지털 콘텐츠 관리 및 보호 기술이다.

 

  • DRM의 기본 동작 방식: 원본 콘텐츠가 아날로그인 경우 먼저 디지털로 변환한다. 이후 패키저(Packager)를 통해 DRM 패키징을 수행하게 되는데 이때 콘텐츠에는 암호화된 저작권자의 전자서명이 포함된다. 그리고 저작권자가 설정한 라이선스 정보는 클리어링 하우스(Clearing House)에 등록되어 관리된다.
  • 디지털 저작권 관리의 흐름 및 구성 요소

DRM의 기본 동작 방식

구성 요소 설명
클리어링 하우스(Clearing House) 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행하는 곳
콘텐츠 제공자(Contents Provider) 콘텐츠를 제공하는 저작권자
콘텐츠 분배자(Contents Distributor) 암호화된 콘텐츠를 유통하는 곳이나 사람
콘텐츠 소비자(Customer) 콘텐츠를 구매해서 사용하는 주체
패키저(Packager) 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
DRM 컨트롤러(DRM Controller) 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
보안 컨테이너(Security Container) 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
  • 디지털 저작권 관리의 기술 요소
구성 요소 설명
암호화(Encryption) 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
키 관리(Key Management) 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
암호화 파일 생성(Packager) 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
식별 기술(Identification) 콘텐츠에 대한 식별 체계 표현 기술
저작권 표현(Right Expression) 라이선스의 내용 표현 기술
정책 관리(Policy Management) 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
크랙 방지(Tamper Resistance) 크랙에 의한 콘텐츠 사용 방지 기술
인증(Authentication) 라이선스 발급 및 사용자의 기준이 되는 사용자 인증 기술

 

 

 

형상 관리(SCM: Software Configuration Management): 개발 과정에서 발생하는 소프트웨어의 모든 변경 사항을 체계적으로 관리하기 위한 일련의 활동이다. 소프트웨어 개발의 전 단계와 유지보수 단계에서도 지속적으로 수행되며 개발 전체 비용을 줄이고 프로젝트 진행을 방해하는 요인을 최소화하는 것이 목적이다. 소프트웨어의 생산성과 품질을 높일 수 있다. 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 모두 관리 대상이다. (대표적인 도구: Git, CVS, SVN 등)

  • 형상 관리 기능
기능 내용
형상 식별 형상 관리 대상에 이름과 관리 번호를 부여하고 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
버전 제어 소프트웨어 업그레이드나 유지보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고 이를 위해 특정 절차와 도구(Tool)를 결합하는 작업
형상 통제 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
형상 감사 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
형상 기록 형상의 식별, 통제, 감사 작업의 결과를 기록 및 관리하고 보고서를 작성하는 작업

 

 

소프트웨어 버전 등록 및 주요 기능(버전 관리 항목)

항목 설명
저장소(Repository) 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 핵심 공간
가져오기(Import) 버전 관리가 되고 있지 않은 빈 저장소에 처음으로 파일을 복사하여 넣는 작업
체크아웃/인출(Check-Out) 프로그램을 수정하기 위해 저장소에서 파일을 받아오는 작업(소스 파일과 함께 버전 관리를 위한 파일도 함께 받아옴)
체크인(Check-In) 체크아웃한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신하는 작업
커밋/예치(Commit) 체크인을 수행할 때 충돌(Conflict)이 있는 경우 이를 알리고 Diff 도구(차이점 표시 도구)를 이용해 수정한 후 최종적으로 갱신을 완료하는 작업
동기화(Update) 저장소에 있는 최신 버전의 상태로 자신의 로컬 작업 공간을 똑같이 맞추는(동기화) 작업
  • 소프트웨어 버전 등록 과정: 가져오기(Import) → 인출(Check-Out) → 예치(Commit) → 동기화(Update) → 차이(Diff)

 

소프트웨어 버전 관리 도구 방식

  • 공유 폴더 방식(Shared Folder): 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되는 초기의 방식, 파일을 잘못 복사하거나 덮어쓰는 실수에 대비하기 위해 파일의 변경 사항을 데이터베이스에 기록하여 관리한다. (종류: SCCS, RCS 등)
  • 클라이언트/서버 방식(Client/Server): 버전 관리 자료가 중앙 서버에 집중되어 관리되는 방식입니다. 모든 버전 관리가 서버에서 수행되므로 서버나 네트워크에 문제가 생기면 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업이 전면 중단된다는 단점이 있습니다. (종류: CVS, SVN 등)
  • 분산 저장소 방식(Distributed Repository): 버전 관리 자료가 하나의 원격 저장소(Remote Repository)와 개발자 각자의 지역 저장소(Local Repository)에 함께 저장되는 방식입니다. 지역 저장소에서 독립적인 버전 관리가 가능하므로, 원격 저장소나 네트워크에 문제가 생겨도 지역 저장소의 자료를 이용해 오프라인 작업을 계속할 수 있습니다. (종류: Git, Mercurial, BitKeeper 등)

 

소프트웨어 버전 관리 도구

  • Subversion(서브버전, SVN): 콜랩넷(CollabNet)에서 2000년에 발표하여 이전 세대 도구인 CVS를 크게 개선한 시스템, 클라이언트/서버 구조를 띠며 중앙 서버에 최신 버전의 파일들과 변경 사항이 통합 관리된다. 오픈소스로 무료 사용이 가능
  • Git(깃): 리눅스의 창시자 리누스 토발즈(Linus Torvalds)가 2005년 리눅스 커널 개발에 사용하기 위해 직접 고안한 분산 버전 관리 시스템(현재는 주니오 하마노가 핵심 유지보수를 담당), 지역 저장소에서 대부분의 버전 관리 작업이 진행되므로 처리 속도가 매우 신속하며 오프라인 상태에서도 온전한 작업과 브랜치 생성이 가능하다는 강력한 장점을 가집니다.
  • RCS(Revision Control System): 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구

 

빌드 자동화 도구: 소스 코드를 컴파일하고 패키징하는 '빌드(Build)' 과정부터 테스트, 배포에 이르는 일련의 과정을 자동화해 주는 도구, 개발자들이 코드를 지속적으로 통합하고 배포하는 애자일(Agile) 환경이나 CI/CD(지속적 통합/지속적 배포) 파이프라인에서 필수적으로 활용된다.(주요 도구: Ant, Make, Maven, Gradle, Jenkins 등)

  • Jenkins: Java 기반의 오픈 소스 도구로, 서블릿 컨테이너에서 실행되는 서버 기반 시스템, 전 세계에서 가장 많이 사용되는 CI 도구로, SVN, Git 등 대부분의 형상 관리 시스템과 완벽하게 연동이 가능하다. 친숙하고 직관적인 Web GUI를 제공하여 설정과 사용이 편리하다.
  • Gradle: Groovy(동적 객체 지향 프로그래밍 언어) 기반의 오픈 소스 자동화 도구, XML 대신 Groovy를 사용해 만든 DSL(Domain Specific Language)을 스크립트 언어로 채택하여 코드가 훨씬 간결하고 가독성이 뛰어나다. 안드로이드 앱 개발의 공식 빌드 환경으로 널리 쓰이며 플러그인 설정 시 Java, C/C++, Python 등 다양한 언어의 빌드도 지원한다. 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행한다.
반응형