ALM(Application Lifecycle Management) 및 Unity 앱Application Lifecycle Management (ALM) with Unity Apps

최신 플랫폼용 앱을 개발하려면 코드 작성 이외에도 많은 작업을 수행해야 합니다.Developing apps for modern platforms involves many more activities than just writing code. DevOps(개발+운영)라는 이러한 활동은 앱의 전체 수명 주기에 걸쳐 있으며 민첩한 작업 계획 및 추적, 코드 디자인 및 구현, 소스 코드 리포지토리 관리, 빌드 실행, 연속 통합 및 배포 관리, 테스트(단위 테스트 및 UI 테스트 포함), 개발 및 프로덕션 환경에서 다양한 형태의 진단 실행, 원격 분석 및 분석을 통해 실시간으로 앱 성능과 사용자 동작 모니터링을 포함합니다.These activities, referred to as DevOps (development + operations) span the app's complete lifecycle and include planning and tracking work, designing and implementing code, managing a source code repository, running builds, managing continuous integrations and deployments, testing (including unit tests and UI tests), running various forms of diagnostics in both development and production environments, and monitoring app performance and user behaviors in real time through telemetry and analytics.

Visual Studio Team Services 및 Team Foundation Server와 더불어 Visual Studio는 다양한 DevOps 기능(애플리케이션 수명 주기 관리 또는 ALM이라고도 함)을 제공합니다.Visual Studio together with Visual Studio Team Services and Team Foundation Server provide a variety of DevOps capabilities, also referred to as Application Lifecycle Management or ALM. 이러한 기능은 특히 스크립트 언어로 C#을 사용하는 경우 Unity로 만든 게임 및 몰입형 그래픽 앱을 포함하여 플랫폼 간 프로젝트에 대부분 적용할 수 있습니다.Many of these are applicable to cross-platform projects, including games and immersive graphical apps created with Unity—especially when using C# as a scripting language. 그러나 Unity에는 자체 개발 환경과 런타임 엔진이 있기 때문에 많은 ALM 기능은 Visual Studio에 빌드된 다른 종류의 프로젝트에 적용되는 것과 같이 적용되지 않습니다.However, because Unity has its own development environment and runtime engine, a number of ALM features don't apply as they would to other kinds of projects built in Visual Studio.

아래 표에서는 Unity로 작업할 때 어떤 Visual Studio ALM 기능이 적용되는지 확인할 수 있습니다.The tables below identifies how Visual Studio ALM features apply or don't apply when working with Unity. 기능 자체에 대한 자세한 내용은 연결된 설명서를 참조하세요.Refer to the linked documentation for details on the features themselves.

Agile 도구Agile tools

참조 링크: 작업(Visual Studio Team Services 또는 TFS 사용, Team Explorer Everywhere 포함)Reference link: Work (using Visual Studio Team Services or TFS, including Team Explorer Everywhere)

일반 설명: 모든 계획 및 추적 기능은 프로젝트 형식 및 코딩 언어와 독립적입니다.General Comment: all planning and tracking features are independent of project type and coding languages.

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
백로그 및 스프린트 관리Manage backlogs and sprints Yes
작업 추적Work tracking Yes
단체 방 공동 작업Team room collaboration Yes
Kanban 보드Kanban boards Yes
보고 및 진행률 시각화Report and visualize progress Yes

모델링Modeling

참조 링크: 아키텍처 분석 및 모델링Reference link: Analyzing and Modeling Architecture

일반 설명: 이러한 디자인 기능은 코딩 언어에 독립적이거나 C#과 같은 .NET 언어로 작동하지만 개체 계층 구조 및 클래스 관계를 포함하는 기존 응용 프로그램 패러다임에서 작동합니다.General Comment: Although these design features are either independent of coding language, or work with .NET languages like C#, they operate on a traditional application paradigm with object hierarchies and class relationships. Unity 내에서 게임을 디자인하는 경우 완전히 다른 패러다임, 즉 그래픽 개체, 소리, 셰이더, 스크립트 등의 관계가 필요합니다.Designing a game within Unity involves a different paradigm altogether, namely the relationships of graphical objects, sounds, shaders, scripts, and so forth. 이러한 이유로 Visual Studio 모델링 다이어그램 도구는 Unity 프로젝트 전체와 특별한 관련이 없습니다.For this reason, the Visual Studio modeling diagram tools are not particularly relevant to the whole of a Unity project. C# 스크립트 내에서 관계를 관리하는 데 사용될 수 있지만 전체의 일부일 뿐입니다.They could possibly be used to manage relationships within C# scripts, but that is only one part of the whole.

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
시퀀스 다이어그램Sequence diagrams 아니요No
종속성 그래프Dependency graphs 아니요No
호출 계층 구조Call hierarchy 아니요No
클래스 디자이너Class designer 아니요No
아키텍처 탐색기Architecture explorer 아니요No
UML 다이어그램(사용 사례, 활동, 클래스, 구성 요소, 시퀀스 및 DSL)UML diagrams (use case, activity, class, component, sequence, and DSL) 아니요No
레이어 다이어그램Layer diagrams 아니요No
레이어 유효성 검사Layer validation 아니요No

코드Code

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
Team Foundation 버전 제어 또는 Visual Studio Team Services 사용Use Team Foundation Version Control or Visual Studio Team Services Yes Unity 프로젝트는 단순히 다른 프로젝트와 마찬가지로 버전 제어 시스템에 배치할 수 있는 파일 모음이지만, 특별히 고려해야 하는 몇 가지 사항을 뒤에서 설명합니다.Unity projects are simply a collection of files that can be placed into version control systems like any other project, but there are a few special considerations described after this table.
Team Services에서 Git 시작하기Getting started with Git in Team Services Yes 표 뒤에 나오는 설명을 참조하세요.See notes after the table.
코드 품질 향상Improve Code Quality Yes
코드 변경 내용 및 기타 기록 찾기Find code changes and other history Yes
코드 맵을 사용하여 응용 프로그램 디버그Use code maps to debug your applications Yes

Unity로 버전 제어를 수행하기 위한 특별 고려 사항:Special considerations for version control with Unity:

  1. Unity는 기본적으로 숨겨져 있는 불투명 단일 라이브러리에서 게임 자산 메타데이터를 추적합니다.Unity tracks metadata about game assets in a single, opaque library that is hidden by default. 파일 및 메타데이터를 동기화된 상태로 유지하려면 메타데이터를 표시하고 더 관리하기 쉬운 청크로 저장해야 합니다.To keep files and metadata in sync, it is necessary to make the metadata visible and to store it in more-manageable chunks. 자세한 내용은 Unity와 함께 외부 버전 제어 시스템 사용(Unity 설명서)을 참조하세요.For details, refer to Using External Version Control Systems with Unity (Unity documentation).

  2. Unity 프로젝트의 일부 파일 및 폴더는 위의 링크에 설명된 것처럼 소스 제어에 적합하지 않습니다.Not all files and folders in a Unity project are appropriate for source control, as is also described in the link above. Assets 및 ProjectSettings 폴더는 추가해야 하고 Library 및 Temp 폴더는 추가하면 안 됩니다.The Assets and ProjectSettings folders should be added, but the Library and Temp folders should not. 소스 제어로 이동하지 않는 생성된 파일의 추가 목록에 대해서는 StackOverflow의 Unity3D 소스 제어에 Git을 사용하는 방법을 참조하세요.For an additional list of generated files that would not go into source control, see the discussion How to use Git for Unity3D source control? on StackOverflow. 독립적으로 이 주제에 대한 블로그 게시물을 올린 개발자도 많습니다.Many developers have also blogged on this subject independently.

  3. 질감 또는 오디오 파일과 같은 Unity 프로젝트의 이진 자산은 많은 저장 공간을 차지할 수 있습니다.Binary assets in a Unity project—such as textures or audio files—can take up a large amount of storage. Git와 같은 다양한 소스 제어 시스템은 변경 내용이 파일의 일부에만 영향을 주는 경우에도 변경될 때마다 파일의 고유 복사본을 저장합니다.Various source control systems like Git store a unique copy of a file for every change that is made, even if the change affects only a small portion of the file. 이로 인해 Git 리포지토리가 너무 커질 수 있습니다.This can cause the Git repository to become bloated. 이 문제를 해결하기 위해 대개 Unity 개발자는 최종 자산만 리포지토리에 추가하고 OneDrive, DropBox, git-annex 등의 다른 방법으로 자산의 작업 기록을 유지합니다.To address this, Unity developers often elect to add only final assets to their repository, and use a different means of keeping a working history of their assets, such as OneDrive, DropBox, or git-annex. 일반적으로 이러한 자산은 소스 코드 변경에 따라 버전을 관리할 필요가 없으므로 이 접근 방식은 유용합니다.This approach works because such assets typically don't need to be versioned along with source code changes. 또한 개발자는 일반적으로 프로젝트 편집기의 Asset Serialization Mode를 Force Text로 설정하여 이진 형식이 아니라 텍스트에 장면 파일을 저장하므로 소스 제어에서 병합할 수 있습니다.Developers also typically set the project editor's Asset Serialization Mode to Force Text to store scene files in text rather than binary format, which allows for merges in source control. 자세한 내용은 편집기 설정(Unity 설명서)을 참조하세요.For details, see Editor Settings (Unity documentation).

빌드Build

참조 링크: 빌드Reference link: Build

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
온-프레미스 TFS 서버On-premises TFS server 가능Possible Unity 프로젝트는 Visual Studio 빌드 시스템이 아니라 Unity 환경을 통해 빌드됩니다(Visual Studio Tools for Unity 내에서 빌드하면 스크립트가 컴파일되지만 실행 파일은 생성되지 않음).Unity projects are built through the Unity environment and not through the Visual Studio build system (building within the Visual Studio Tools for Unity will compile the scripts but not produce an executable). 명령줄에서 Unity 프로젝트를 빌드(Unity 설명서)할 수 있으므로 Unity 자체가 해당 컴퓨터에 설치되어 있는 경우 적절한 Unity 명령을 실행하도록 TFS 서버의 MSBuild 프로세스를 구성할 수 있습니다.It is possible to build Unity projects from the command line (Unity documentation), so it possible to configure an MSBuild process on a TFS server to execute the appropriate Unity commands, provided that Unity itself is installed on that computer.

또한 Unity는 Git 또는 SVN 리포지토리를 모니터링하고 정기적 빌드를 실행하는 Unity 클라우드 빌드를 제공합니다.Unity also offers Unity Cloud Build, which monitors a Git or SVN repository and runs periodic builds. 현재 Team Foundation 버전 제어 또는 Visual Studio Team Services에서는 작동하지 않습니다.At present it does not work with Team Foundation Version Control or Visual Studio Team Services.
Visual Studio Team Services에 연결된 온-프레미스 빌드 서버On-premises build server linked to Visual Studio Team Services 가능Possible 위와 동일한 조건에서 Visual Studio Team Services를 통해 트리거된 빌드가 온-프레미스 TFS 컴퓨터를 사용하도록 추가로 지정할 수 있습니다.Given the same conditions as above, it is further possible to direct builds triggered through Visual Studio Team Services to use an on-premises TFS computer. 자세한 내용은 빌드 서버를 참조하세요.See Build server for instructions.
Visual Studio Team Services의 호스트된 컨트롤러 서비스Hosted controller service of Visual Studio Team Services 아니요No Unity 빌드는 현재 지원되지 않습니다.Unity builds are not presently supported.
사전 및 사후 스크립트로 정의 작성Build definitions with pre- and post-scripts Yes 사전 및 사후 빌드 스크립트에 대해 Unity 명령줄을 사용하여 빌드를 실행하는 사용자 지정 빌드 정의를 구성할 수도 있습니다.A custom build definition that uses the Unity command line to run a build can also be configured for pre- and post-build scripts.
제어된 체크 인을 포함하는 연속 통합Continuous integration including gated check-ins Yes Git는 체크 인이 아니라 끌어오기 요청 모델로 작동하므로 TFVC에 대한 제어된 체크 인에만 해당Gated check-ins for TFVC only as Git works on a pull-request model rather than check-ins.

테스트Testing

참조 링크: 응용 프로그램 테스트Reference link: Testing the application

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
테스트 계획, 테스트 사례 만들기 및 테스트 도구 모음 구성Planning tests, creating test cases and organizing test suites Yes
수동 테스트Manual testing Yes
테스트 관리자(테스트 기록 및 재생)Test Manager (record and playback tests) Windows 장치 및 Android 에뮬레이터에만 해당Windows devices and Android emulators only
코드 검사Code coverage N/An/a Visual Studio가 아니라 Unity 내에서 단위 테스트가 발생하는 경우에는 해당하지 않습니다. 아래를 참조하세요.Not applicable as unit testing happens within Unity and not Visual Studio, see below.
코드 단위 테스트Unit Test Your Code Visual Studio가 아니라 Unity 내에서 발생Within Unity, but not Visual Studio Unity는 Unity 테스트 도구(Unity 자산 스토어)의 일부로 자체 단위 테스트 프레임워크를 제공합니다.Unity provides its own unit test framework as part of Unity Test Tools (Unity Asset Store). 단위 테스트 결과는 Unity 내에서 보고되고 Visual Studio 내에 표시되지 않습니다.Unit test results are reported within Unity and will not be surfaced within Visual Studio.
UI 자동화를 사용하여 코드 테스트Use UI Automation To Test Your Code 아니요No 코딩된 UI 테스트는 앱 UI의 읽을 수 있는 컨트롤을 사용합니다. Unity 앱은 본질적으로 그래픽이므로 코딩된 UI 테스트 도구에서 콘텐츠를 읽을 수 없습니다.Coded UI tests rely on readable controls in the app's UI; Unity apps are graphical in nature and so content isn't readable by the Coded UI test tools.

코드 품질 향상Improve code quality

참조 링크: 코드 품질 향상Reference link: Improve Code Quality

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
관리 코드 품질 분석Analyzing Managed Code Quality Yes Visual Studio 내에서 C# 스크립트 코드를 분석할 수 있습니다.Can analyze the C# script code within Visual Studio.
코드 복제본 검색을 사용하여 중복 코드 찾기Finding Duplicate Code by using Code Clone Detection Yes Visual Studio 내에서 C# 스크립트 코드를 분석할 수 있습니다.Can analyze the C# script code within Visual Studio.
관리 코드의 복잡성 및 유지 관리 용이성 측정Measuring Complexity and Maintainability of Managed Code Yes Visual Studio 내에서 C# 스크립트 코드를 분석할 수 있습니다.Can analyze the C# script code within Visual Studio.
성능 탐색기Performance Explorer 아니요No Unity 프로파일러(Unity 웹 사이트)를 사용합니다.Use the Unity Profiler (Unity website).
.NET Framework 메모리 문제 분석Analyze .NET Framework memory issues 아니요No Visual Studio 도구에는 프로파일링을 위한 모노 프레임워크(Unity에서 사용)에 대한 후크가 없습니다.Visual Studio tools do not have hooks into the Mono framework (as used by Unity) for profiling. Unity 프로파일러(Unity 설명서)를 사용합니다.Use the Unity Profiler (Unity documentation).

릴리스 관리Release management

참조 링크: 릴리스 관리로 배포 자동화Reference link: Automate deployments with Release Management

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
릴리스 프로세스 관리Manage release processes Yes
스크립트를 통한 테스트용 로드를 위해 서버에 배포Deployment to servers for side-loading via scripts Yes
앱 스토어에 업로드Upload to app store PartialPartial 일부 앱 스토어의 경우 이 프로세스를 자동화할 수 있는 확장을 사용할 수 있습니다.Extensions are available that can automate this process for some app stores. Visual Studio Team Services용 확장(예: Google Play용 확장)을 참조하세요.See Extensions for Visual Studio Team Services; for example, the extension for Google Play.

HockeyApp으로 모니터링Monitor with HockeyApp

참조 링크: HockeyApp으로 모니터링Reference link: Monitor with HockeyApp

기능Feature Unity에서 지원 여부Supported with Unity 추가 설명Additional Comments
충돌 분석, 원격 분석 및 베타 분포Crash analytics, telemetry, and beta distribution Yes HockeyApp은 주로 베타 분포를 처리하고 충돌 보고서를 얻는 데 유용합니다.HockeyApp is primarily useful for handling beta distribution and obtaining crash reports.

C# 스크립트에서의 원격 분석에서는 Unity가 사용하는 .NET 버전에서 실행되기만 하면 모든 분석 프레임워크를 사용할 수 있습니다.For telemetry from C# scripts, it is possible to use any analytics framework provided that it runs on the version of .NET that is used by Unity. 그러나 게임 스크립트 내에서만 분석할 수 있고 Unity 엔진 내에서 보다 자세히 분석할 수는 없습니다.However, this allows for analytics only within game scripts and not more deeply inside the Unity engine. 현재 Application Insights에 대한 플러그 인은 없지만, Unity AnalyticsGoogle Analytics 등 기타 분석 솔루션에 대한 플러그 인은 사용 가능합니다.At present there is no plugin for Application Insights, but plugins are available for other analytics solutions such as Unity Analytics and Google Analytics. 물론 Unity 프로젝트의 특성을 이해하는 Unity 분석 등의 서비스가 일반 프레임워크보다 훨씬 더 의미 있는 분석을 제공합니다.Services like Unity Analytics that understand the nature of a Unity project will, of course, provide much more meaningful analysis than generic frameworks.