소프트웨어 개발

제품소프트웨어 패키징

출제기준 세세항목: 애플리케이션 패키징 · 애플리케이션 배포 도구 · 애플리케이션 모니터링 도구 · DRM

핵심 요약

완성된 코드와 '제품' 사이의 거리

개발자 컴퓨터에서 잘 돌아가는 프로그램이 곧바로 제품이 되지는 않습니다. 사용자는 소스 코드를 받아 직접 빌드할 수 없고, 어떤 라이브러리가 필요한지도 모릅니다. 사용자가 받아서 설치하고 바로 쓸 수 있도록 실행 파일과 필요한 파일, 설정, 설명서까지 하나로 묶어 내놓는 일이 패키징입니다.

그래서 패키징은 철저히 사용자 입장에서 생각합니다. 사용자의 운영체제와 하드웨어 사양은 어떤지, 설치 과정이 얼마나 쉬워야 하는지, 업데이트는 어떤 방식으로 받게 할지, 설치 후 관리는 어떤 형태로 제공할지를 따집니다. 사용자의 화면과 사용 방식에 맞는 UI인지, 다른 프로그램과 함께 설치되어도 문제없는지도 확인합니다. 그리고 한 번 만들고 끝나는 것이 아니라, 새 버전이 나올 때마다 같은 품질로 반복해서 만들 수 있어야 합니다.

패키징 작업은 어떤 순서로 할까요

패키징 작업 순서
기능 식별→모듈화→빌드 진행→사용자 환경 분석→패키징 적용 시험→패키징 변경 개선→배포

패키징은 보통 기능 식별 → 모듈화 → 빌드 진행 → 사용자 환경 분석 → 패키징 적용 시험 → 패키징 변경 개선 → 배포 순서로 진행합니다. 처음에는 이번에 내보낼 제품에 들어갈 기능과 그 기능에 필요한 입출력 데이터, 실행 조건을 확인합니다(기능 식별).

다음으로 기능을 묶음 단위로 정리하고(모듈화), 그 모듈들을 실행 가능한 형태로 만듭니다(빌드 진행). 여기까지가 '무엇을 담을지'를 준비하는 과정입니다. 이어서 이 결과물이 실제로 깔릴 사용자 쪽의 운영체제, 사양, 네트워크 같은 조건을 살핍니다(사용자 환경 분석).

그다음 실제 사용자 환경과 비슷한 조건에서 설치와 실행을 시험해 보고(패키징 적용 시험), 시험에서 드러난 불편이나 문제를 반영해 패키지를 고칩니다(패키징 변경 개선). 마지막으로 사용자에게 내보냅니다(배포). 앞부분은 개발자 쪽 준비, 뒷부분은 사용자 쪽 확인이라는 흐름으로 보면 순서가 자연스럽게 잡힙니다.

패키지와 함께 릴리즈 노트를 남기는 것도 중요합니다. 릴리즈 노트는 이번 버전에서 무엇이 추가되고 고쳐졌는지, 사용자에게 어떤 영향이 있는지를 정리한 문서로, 개발팀이 직접 현재 시제로 정확하게 작성합니다. 출시 후 긴급 수정이 나가도 그 내용을 릴리즈 노트에 추가해 이력이 끊기지 않게 합니다.

애플리케이션 배포 도구: 배포물을 안전하게 내보내기

애플리케이션 배포 도구는 완성된 결과물을 사용자에게 안전하게 내보내기 위한 도구입니다. 시험에서는 주로 배포물을 보호하는 기술 구성과 도구를 쓸 때의 고려사항이 나옵니다. 결과물을 만드는 과정을 자동화하는 Ant, Maven, Gradle, Jenkins 같은 도구는 '빌드 자동화 도구'로 따로 분류하며, 제품소프트웨어 버전관리 항목에서 자세히 다룹니다.

배포 도구의 핵심은 결과물을 '안전하게 내보내는' 데 있습니다. 유료 소프트웨어나 디지털 콘텐츠라면 허가받지 않은 복제와 사용을 막아야 하기 때문입니다. 그래서 배포 도구를 다룰 때는 콘텐츠를 암호화하는 기술, 암호화에 쓰는 키를 관리하는 기술, 프로그램을 몰래 고치거나 우회하지 못하게 하는 크랙 방지 기술, 사용자를 확인하는 인증 기술 같은 보호 기술이 함께 등장합니다. 이 기술들이 바로 뒤에서 볼 DRM의 핵심 기술이기도 합니다.

배포 도구를 고를 때는 암호화나 보안 기능이 실제 사용 환경에서 문제를 일으키지 않는지, 기존 시스템과 잘 연동되는지, 사용자가 불편하지 않은지를 함께 따져야 합니다. 보안을 지나치게 강하게 걸어 정당한 사용자가 설치조차 못 하면 의미가 없습니다.

애플리케이션 모니터링 도구: 배포 후에도 지켜보기

배포가 끝이 아닙니다. 실제 사용자가 몰리면 개발 중에는 보이지 않던 느려짐이나 오류가 나타납니다. 애플리케이션 모니터링 도구는 운영 중인 애플리케이션의 상태를 계속 관찰하고, 문제가 생기면 빨리 알아차리고 원인을 찾도록 돕습니다.

모니터링 도구가 맡는 일은 몇 갈래로 나눌 수 있습니다. 코드나 설정이 바뀌었을 때 어떤 부분에 영향이 가는지 분석하는 변경 관리, 응답 시간이나 처리량, 자원 사용량을 재서 느려지는 구간을 찾는 성능 관리, 그리고 코드 품질을 살피는 분석 기능입니다. 성능 관리 쪽에서는 서버와 애플리케이션의 성능을 실시간으로 보여 주는 APM(Application Performance Monitoring) 계열 도구가 많이 쓰입니다.

분석 기능은 '애플리케이션 성능 개선' 항목에서 다루는 소스코드 품질분석 도구와 같은 구분을 따릅니다. 실행하지 않고 소스 코드를 검사해 규칙 위반이나 잠재 오류를 찾는 정적 분석 도구(PMD, Cppcheck, SonarQube, Checkstyle 등)와, 실행하면서 메모리 누수나 실행 중에만 드러나는 오류를 찾는 동적 분석 도구(Valgrind, Avalanche 등)입니다. 배포 전에는 정적 분석으로 넓게 거르고, 운영 중에는 성능과 동작을 관찰하는 식으로 함께 씁니다.

DRM: 디지털 콘텐츠의 사용 범위를 지키는 기술

디지털 파일은 복사해도 원본과 똑같습니다. 종이책은 빌려주면 내 손을 떠나지만, 파일은 몇 번이고 복사해 나눠 줄 수 있습니다. DRM(Digital Rights Management, 디지털 저작권 관리)은 이런 콘텐츠를 허가받은 사용자만, 허가받은 방식과 기간 안에서만 쓸 수 있게 만드는 기술입니다. 전자책, 음원, 영화 스트리밍, 유료 소프트웨어에 널리 쓰입니다.

DRM에는 여러 참여자가 있습니다. 콘텐츠를 만들고 권리를 가진 콘텐츠 제공자(Contents Provider), 쇼핑몰처럼 콘텐츠를 유통하는 콘텐츠 분배자(Contents Distributor), 돈을 내고 콘텐츠를 쓰는 콘텐츠 소비자(Customer)가 사람 쪽 구성원입니다.

기술 쪽 구성 요소도 있습니다. 콘텐츠를 보호된 형태로 묶어 주는 패키저(Packager), 보호된 콘텐츠를 담아 옮기는 상자인 보안 컨테이너, 소비자의 기기에서 콘텐츠 사용 권한을 확인하고 이용을 제어하는 DRM 컨트롤러가 있습니다. 그리고 이들 사이에서 암호 키를 관리하고, 사용 권한(라이선스)을 발급하고, 사용량에 따라 정산을 처리하는 중개 역할을 클리어링 하우스(Clearing House)가 맡습니다. 은행 간 결제를 중간에서 정리해 주는 청산소처럼, 권한과 대금을 중간에서 정리해 준다고 생각하면 이름이 이해됩니다.

DRM을 이루는 기술들

DRM은 하나의 기술이 아니라 여러 기술의 조합입니다. 가장 바탕에는 콘텐츠를 열쇠 없이는 읽을 수 없게 만드는 암호화가 있고, 그 열쇠를 어디에 어떻게 보관하고 나눠 줄지를 정하는 키 관리가 있습니다. 키 관리는 키를 한곳에서 관리하는 중앙 집중형과 여러 곳에 나눠 두는 분산형으로 나눌 수 있습니다. 원본 콘텐츠를 실제로 암호화된 파일로 만들어 내는 암호화 파일 생성 기술도 필요합니다.

누가 어떤 콘텐츠를 어떤 조건으로 쓸 수 있는지를 표현하는 기술도 있습니다. 콘텐츠마다 고유한 식별 번호를 붙여 구분하는 식별 기술(DOI 같은 체계), 재생 횟수나 사용 기간 같은 권리 조건을 컴퓨터가 읽을 수 있는 형태로 적는 저작권 표현 기술, 그 조건을 정하고 관리하는 정책 관리 기술이 여기에 속합니다.

마지막으로 보호 장치가 우회되지 않게 막는 기술이 있습니다. 프로그램을 분석하거나 변조해 보호를 풀려는 시도를 막는 크랙 방지(Tamper Resistance) 기술과, 콘텐츠를 쓰려는 사용자가 정당한 권리자인지 확인하는 인증 기술입니다. 정리하면 '잠그고(암호화·키 관리·파일 생성), 조건을 적고(식별·저작권 표현·정책 관리), 뚫리지 않게 지키는(크랙 방지·인증)' 세 묶음입니다.

실무에서는 이렇게 쓰여요

사용자 환경 분석에서 걸러진 문제

개발팀은 모두 최신 운영체제를 쓰고 있었지만, 사용자 환경을 분석해 보니 고객사 상당수가 한 단계 오래된 버전을 쓰고 있었습니다. 패키징 적용 시험을 그 환경에서 돌리자 설치 중 필요한 런타임이 없어 실패했고, 설치 프로그램이 런타임을 함께 설치하도록 패키지를 고친 뒤 배포했습니다.

전자책 대여의 DRM 흐름

도서 플랫폼(분배자)에서 전자책을 7일 대여하면, 클리어링 하우스가 '이 기기, 7일'이라는 조건의 라이선스와 키를 발급합니다. 내 기기의 DRM 컨트롤러는 라이선스를 확인한 뒤에만 보안 컨테이너 속 책을 열어 주고, 7일이 지나면 더는 열리지 않습니다.

총정리 목차로