쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
해당 지식과 관련있는 인기재능

안녕하세요.신호처리를 전공한 개발자 입니다. 1. 영상신호처리, 생체신호처리 알고리즘 개발2. 안드로이드 앱 개발 3. 윈도우 프로그램...

 안녕하세요. 안드로이드 기반 개인 앱, 프로젝트용 앱부터 그 이상 기능이 추가된 앱까지 제작해 드립니다.  - 앱 개발 툴: 안드로이드...

소개안드로이드 기반 어플리케이션 개발 후 서비스를 하고 있으며 스타트업 경험을 통한 앱 및 서버, 관리자 페이지 개발 경험을 가지고 있습니다....

 안녕하세요 현재 안드로이드 기반 어플리케이션 제작 및 서비스를 하고 있으며,스타트업회사에 재직중입니다.- 개인앱, 프로젝트용 앱 등부...

C# 프로젝트의 의존성 관리 전략

2024-11-26 16:36:38

재능넷
조회수 298 댓글수 0

C# 프로젝트의 의존성 관리 전략 🚀

 

 

안녕하세요, 여러분! 오늘은 C# 프로젝트에서 의존성 관리를 어떻게 하면 좋을지에 대해 깊이 있게 파헤쳐볼 거예요. 의존성 관리라니, 뭔가 어려워 보이죠? ㅋㅋㅋ 하지만 걱정 마세요! 제가 쉽고 재밌게 설명해드릴게요. 마치 카톡으로 수다 떠는 것처럼요! 😉

우선, 의존성이 뭔지부터 알아볼까요? 간단히 말해서, 우리가 만드는 프로그램이 다른 코드나 라이브러리를 필요로 할 때, 그걸 의존성이라고 해요. 마치 우리가 친구들의 도움을 받는 것처럼요! 🤝

C# 프로젝트에서 이런 의존성을 잘 관리하는 건 정말 중요해요. 왜냐고요? 프로젝트가 커질수록 의존성도 많아지고, 그걸 관리하기가 점점 더 어려워지거든요. 마치 친구가 많아질수록 생일 챙기기가 힘들어지는 것처럼요! 😅

그래서 오늘은 이 의존성 관리를 어떻게 하면 좋을지, 여러 가지 전략들을 알아볼 거예요. 재능넷에서 프로그래밍 재능을 공유하는 분들이라면 특히 유용할 거예요! 자, 그럼 시작해볼까요? 🎬

1. NuGet 패키지 매니저 사용하기 📦

NuGet이 뭐냐고요? 쉽게 말해서 C#의 앱스토어 같은 거예요! 우리가 스마트폰에서 앱을 다운받듯이, C# 프로젝트에 필요한 라이브러리를 쉽게 다운받고 관리할 수 있게 해주는 도구예요.

NuGet을 사용하면 의존성 관리가 정말 쉬워져요. 왜 그런지 자세히 알아볼까요?

  • 자동 다운로드: 필요한 패키지를 자동으로 다운로드해줘요. 일일이 웹사이트 뒤적거릴 필요 없어요! 👍
  • 버전 관리: 패키지의 버전을 쉽게 관리할 수 있어요. 업데이트도 클릭 한 번으로 가능! 👌
  • 의존성 해결: 한 패키지가 다른 패키지를 필요로 할 때, 알아서 다 설치해줘요. 완전 똑똑하죠? 🧠

NuGet을 사용하는 방법은 정말 간단해요. Visual Studio에서 '도구' > 'NuGet 패키지 관리자' > '솔루션용 NuGet 패키지 관리'를 선택하면 돼요. 그러면 이런 창이 뜰 거예요:

NuGet 패키지 관리자 창 NuGet 패키지 관리자 검색... 패키지 이름 버전 설명

이 창에서 원하는 패키지를 검색하고 설치할 수 있어요. 예를 들어, JSON 데이터를 다루고 싶다면 'Newtonsoft.Json'을 검색해보세요. 설치 버튼만 누르면 끝! 정말 쉽죠? 😎

하지만 주의할 점도 있어요. 패키지를 무작정 설치하다 보면 프로젝트가 너무 무거워질 수 있어요. 마치 스마트폰에 앱을 너무 많이 깔면 느려지는 것처럼요. 그래서 꼭 필요한 패키지만 신중하게 선택해서 설치해야 해요.

재능넷에서 C# 프로그래밍 재능을 공유하는 분들이라면, NuGet 사용법을 꼭 알아두세요! 클라이언트의 요구사항을 더 쉽고 빠르게 구현할 수 있을 거예요. 👨‍💻👩‍💻

자, 이제 NuGet을 사용해서 의존성을 관리하는 방법을 알았어요. 하지만 이게 끝이 아니에요! 다음으로는 더 심화된 전략을 알아볼 거예요. 준비되셨나요? 다음 섹션으로 고고! 🚀

2. 의존성 주입(Dependency Injection) 사용하기 💉

의존성 주입이라니, 뭔가 무서운 주사기 같은 느낌이 들죠? ㅋㅋㅋ 하지만 걱정 마세요! 이건 우리 코드를 더 건강하게 만들어주는 '영양 주사' 같은 거예요. 😉

의존성 주입이란 뭘까요? 간단히 말해서, 필요한 것을 외부에서 가져오는 방식이에요.

예를 들어볼게요. 여러분이 카페에 커피를 마시러 갔다고 생각해보세요. 커피를 마시려면 컵이 필요하죠? 근데 여러분이 직접 컵을 가져가나요? 아니죠! 카페에서 컵을 제공해주죠. 이게 바로 의존성 주입의 개념이에요.

코드로 예를 들어볼까요? 먼저 의존성 주입을 사용하지 않은 경우를 봐요:


public class CoffeeShop
{
    private CoffeeMachine _coffeeMachine;

    public CoffeeShop()
    {
        _coffeeMachine = new CoffeeMachine();  // 직접 생성해요
    }

    public void MakeCoffee()
    {
        _coffeeMachine.Brew();
    }
}

이 코드에서는 CoffeeShop이 직접 CoffeeMachine을 만들고 있어요. 마치 카페에 갈 때 컵을 들고 가는 것과 같죠!

이제 의존성 주입을 사용한 경우를 볼게요:


public class CoffeeShop
{
    private ICoffeeMachine _coffeeMachine;

    public CoffeeShop(ICoffeeMachine coffeeMachine)  // 외부에서 주입받아요
    {
        _coffeeMachine = coffeeMachine;
    }

    public void MakeCoffee()
    {
        _coffeeMachine.Brew();
    }
}

이 코드에서는 CoffeeShop이 직접 CoffeeMachine을 만들지 않고, 외부에서 받아오고 있어요. 카페에서 컵을 제공받는 것과 같죠!

의존성 주입을 사용하면 어떤 장점이 있을까요? 🤔

  • 유연성 증가: 다른 종류의 커피 머신을 쉽게 사용할 수 있어요. 에스프레소 머신이든, 드립 머신이든 상관없어요!
  • 테스트 용이성: 가짜(Mock) 객체를 주입해서 테스트하기 쉬워져요.
  • 코드 재사용성: 같은 인터페이스를 구현한 다른 클래스를 쉽게 사용할 수 있어요.

의존성 주입을 실제로 구현할 때는 보통 DI 컨테이너를 사용해요. C#에서 자주 사용되는 DI 컨테이너로는 Microsoft.Extensions.DependencyInjection이 있어요. 이걸 사용하면 의존성 주입을 더 쉽게 관리할 수 있어요!

예를 들어볼게요:


using Microsoft.Extensions.DependencyInjection;

var services = new ServiceCollection();
services.AddTransient<icoffeemachine espressomachine>();
services.AddTransient<coffeeshop>();

var serviceProvider = services.BuildServiceProvider();

var coffeeShop = serviceProvider.GetService<coffeeshop>();
coffeeShop.MakeCoffee();
</coffeeshop></coffeeshop></icoffeemachine>

이 코드에서는 ICoffeeMachine 인터페이스를 EspressoMachine 클래스로 구현하도록 설정하고 있어요. 그리고 CoffeeShop을 생성할 때 자동으로 EspressoMachine을 주입해줘요. 완전 편하죠? 😎

재능넷에서 C# 프로젝트를 진행하는 분들이라면, 의존성 주입을 꼭 활용해보세요! 코드가 더 유연해지고 관리하기 쉬워질 거예요. 👍

의존성 주입, 어때요? 생각보다 어렵지 않죠? 이제 여러분의 코드도 건강한 '영양 주사'를 맞을 준비가 되었어요! 다음 섹션에서는 또 다른 중요한 전략을 알아볼 거예요. 계속 따라오세요! 🏃‍♂️🏃‍♀️

3. 인터페이스 활용하기 🎭

여러분, 인터페이스라고 들어보셨나요? 뭔가 복잡해 보이죠? ㅋㅋㅋ 하지만 걱정 마세요! 인터페이스는 우리의 좋은 친구예요. 마치 약속을 정해두는 것과 같아요. 😊

인터페이스란 뭘까요? 간단히 말해서, 클래스가 어떤 메서드를 가져야 하는지 정의해주는 '계약서' 같은 거예요.

예를 들어볼게요. 우리가 동물원을 만든다고 생각해봐요. 동물들은 모두 다르지만, 공통적으로 '소리를 낸다'는 행동을 할 수 있죠? 이걸 인터페이스로 표현하면 이렇게 돼요:


public interface IAnimal
{
    void MakeSound();
}

이제 이 인터페이스를 사용해서 여러 동물들을 만들 수 있어요:


public class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("멍멍!");
    }
}

public class Cat : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("야옹~");
    }
}

이렇게 하면 Dog와 Cat 클래스는 모두 IAnimal 인터페이스를 구현하고 있어서, MakeSound() 메서드를 반드시 가지고 있어야 해요. 마치 약속을 지키는 것처럼요! 👍

인터페이스를 사용하면 어떤 장점이 있을까요? 🤔

  • 다형성: 같은 인터페이스를 구현한 여러 클래스를 동일한 방식으로 다룰 수 있어요.
  • 유연성: 새로운 클래스를 추가하기 쉬워져요. 그냥 인터페이스만 구현하면 되니까요!
  • 테스트 용이성: 가짜(Mock) 객체를 만들어 테스트하기 쉬워져요.

인터페이스를 활용한 의존성 관리의 예를 들어볼게요. 동물원 클래스를 만든다고 생각해봐요:


public class Zoo
{
    private List<ianimal> _animals;

    public Zoo()
    {
        _animals = new List<ianimal>();
    }

    public void AddAnimal(IAnimal animal)
    {
        _animals.Add(animal);
    }

    public void MakeAllSounds()
    {
        foreach (var animal in _animals)
        {
            animal.MakeSound();
        }
    }
}
</ianimal></ianimal>

이 Zoo 클래스는 IAnimal 인터페이스에 의존하고 있어요. 덕분에 어떤 동물이든 상관없이 추가할 수 있고, 모든 동물의 소리를 낼 수 있어요. 완전 편리하죠? 😎

사용 예:


var zoo = new Zoo();
zoo.AddAnimal(new Dog());
zoo.AddAnimal(new Cat());
zoo.MakeAllSounds();  // 출력: 멍멍! 야옹~

재능넷에서 C# 프로젝트를 진행하는 분들이라면, 인터페이스를 적극 활용해보세요! 코드가 더 유연해지고 확장성이 높아질 거예요. 👨‍💻👩‍💻

인터페이스, 어때요? 생각보다 쉽죠? 이제 여러분의 코드도 약속을 잘 지키는 '모범 시민'이 될 준비가 되었어요! 다음 섹션에서는 또 다른 중요한 전략을 알아볼 거예요. 계속 따라오세요! 🚶‍♂️🚶‍♀️

4. 레이어드 아키텍처 사용하기 🏗️

레이어드 아키텍처라고 들어보셨나요? 뭔가 복잡한 건물 같은 느낌이 들죠? ㅋㅋㅋ 하지만 걱정 마세요! 이건 우리의 코드를 깔끔하게 정리해주는 '정리의 달인' 같은 거예요. 😉

레이어드 아키텍처란 뭘까요? 간단히 말해서, 프로그램을 여러 층(레이어)으로 나누는 방식이에요.

예를 들어볼게요. 우리가 케이크를 만든다고 생각해봐요. 케이크는 보통 여러 층으로 되어 있죠? 빵 층, 크림 층, 장식 층 등등. 이렇게 나누면 각 층을 따로 관리하기 쉬워져요. 레이어드 아키텍처도 이와 비슷해요!

일반적으로 레이어드 아키텍처는 이런 층들로 구성돼요:

  • 프레젠테이션 레이어: 사용자와 직접 상호작용하는 부분이에요. UI나 API 엔드포인트 같은 것들이 여기 속해요.
  • 비즈니스 로직 레이어: 실제 프로그램의 핵심 로직이 들어가는 부분이에요.
  • 데이터 액세스 레이어: 데이터베이스와 상호작용하는 부분이에요.

이걸 코드로 표현하면 이렇게 될 수 있어요:


// 데이터 액세스 레이어
public interface IUserRepository
{
    User GetUser(int id);
    void SaveUser(User user);
}

// 비즈니스 로직 레이어
public class UserService
{
    private readonly IUserRepository _userRepository;

    public UserService(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    public void UpdateUserEmail(int userId, string newEmail)
    {
        var user = _userRepository.GetUser(userId);
        user.Email = newEmail;
        _userRepository.SaveUser(user);
    }
}

// 프레젠테이션 레이어
public class UserController : Controller
{
    private readonly UserService _userService;

    public UserController(UserService userService)
    {
        _userService = userService;
    }

    [HttpPost]
    public IActionResult UpdateEmail(int userId, string newEmail)
    {
        _userService.UpdateUserEmail(userId, newEmail);
        return Ok();
    }
}

이렇게 나누면 각 레이어가 자신의 역할에만 집중할 수 있어요. 마치 케이크의 각 층이 자기 역할만 하는 것처럼요! 👨‍🍳👩‍🍳

레이어드 아키텍처를 사용하면 어떤 장점이 있을까요? 🤔

  • 관심사의 분리: 각 레이어가 자신의 역할에만 집중할 수 있어요.
  • 유지보수 용이성: 한 레이어의 변경이 다른 레이어에 영향을 미치지 않아요.
  • 테스트 용이성: 각 레이어를 독립적으로 테스트할 수 있어요.
  • 확장성: 새로운 기능을 추가하기 쉬워져요.

레이어드 아키텍처를 시각화해볼까요? 이렇게 생겼어요:

레이어드 아키텍처 다이어그램 프레젠테이션 레이어 비즈니스 로직 레이어 데이터 액세스 레이어

보이시나요? 각 레이어가 깔끔하게 분리되어 있어요. 이렇게 하면 코드 관리가 훨씬 쉬워져요!

재능넷에서 C# 프로젝트를 진행하는 분들이라면, 레이어드 아키텍처를 적용해보세요! 프로젝트 구조가 더 깔끔해지고 관리하기 쉬워질 거예요. 👍

레이어드 아키텍처, 어때요? 생각보다 이해하기 쉽죠? 이제 여러분의 코드도 깔끔하게 정리된 '모범 건물'이 될 준비가 되었어요! 다음 섹션에서는 또 다른 중요한 전략을 알아볼 거예요. 계속 따라오세요! 🏃‍♂️🏃‍♀️

5. 의존성 역전 원칙(DIP) 적용하기 🔄

의존성 역전 원칙이라... 뭔가 복잡해 보이죠? ㅋㅋㅋ 하지만 걱정 마세요! 이건 우리의 코드를 더 유연하게 만들어주는 '요가 강사' 같은 거예요. 😉

의존성 역전 원칙(DIP)이란 뭘까요? 간단히 말해서, 고수준 모듈이 저수준 모듈에 의존하지 않도록 하는 원칙이에요.

음... 뭔가 어려워 보이죠? 예를 들어 설명해볼게요. 우리가 커피숍을 운영한다고 생각해봐요. 커피숍(고수준 모듈)은 커피 머신(저수준 모듈)을 사용해야 해요. 하지만 특정 브랜드의 커피 머신에만 의존하면 어떻게 될까요? 그 브랜드가 망하면 우리 커피숍도 큰 문제가 생기겠죠?

그래서 우리는 '커피를 만들 수 있는 능력'이라는 추상적인 개념에 의존하도록 만들어요. 이렇게 하면 어떤 커피 머신이든 사용할 수 있게 되죠!

코드로 예를 들어볼게요. 먼저 DIP를 적용하지 않은 경우:


public class CoffeeShop
{
    private ExpensiveCoffeeMachine _coffeeMachine;

    public CoffeeShop()
    {
        _coffeeMachine = new ExpensiveCoffeeMachine();
    }

    public void MakeCoffee()
    {
        _coffeeMachine.Brew();
    }
}

이 코드에서는 CoffeeShop이 ExpensiveCoffeeMachine에 직접 의존하고 있어요. 만약 다른 커피 머신을 사용하고 싶다면? 코드를 많이 수정해야 해요. 😓

이제 DIP를 적용한 경우를 볼게요:

  네, 계속해서 DIP를 적용한 경우의 코드 예시를 보여드리겠습니다:

<pre><code>
public interface ICoffeeMachine
{
    void Brew();
}

public class ExpensiveCoffeeMachine : ICoffeeMachine
{
    public void Brew()
    {
        Console.WriteLine("비싼 커피 머신으로 커피를 내립니다.");
    }
}

public class CheapCoffeeMachine : ICoffeeMachine
{
    public void Brew()
    {
        Console.WriteLine("저렴한 커피 머신으로 커피를 내립니다.");
    }
}

public class CoffeeShop
{
    private ICoffeeMachine _coffeeMachine;

    public CoffeeShop(ICoffeeMachine coffeeMachine)
    {
        _coffeeMachine = coffeeMachine;
    }

    public void MakeCoffee()
    {
        _coffeeMachine.Brew();
    }
}

이렇게 하면 CoffeeShop은 ICoffeeMachine 인터페이스에만 의존하게 돼요. 어떤 커피 머신을 사용할지는 외부에서 결정할 수 있죠. 완전 유연해졌어요! 👍

DIP를 적용하면 어떤 장점이 있을까요? 🤔

  • 유연성: 구체적인 구현에 의존하지 않아 변경이 쉬워져요.
  • 테스트 용이성: 가짜(Mock) 객체를 주입해 테스트하기 쉬워져요.
  • 재사용성: 다양한 상황에서 같은 코드를 재사용할 수 있어요.

DIP를 시각화해볼까요? 이렇게 생겼어요:

의존성 역전 원칙 다이어그램 CoffeeShop ICoffeeMachine ConcreteCoffeeMachine

보이시나요? CoffeeShop과 ConcreteCoffeeMachine 모두 ICoffeeMachine에 의존하고 있어요. 이렇게 하면 의존성의 방향이 역전되죠!

재능넷에서 C# 프로젝트를 진행하는 분들이라면, DIP를 적극 활용해보세요! 코드가 더 유연해지고 테스트하기 쉬워질 거예요. 👨‍💻👩‍💻

의존성 역전 원칙, 어때요? 생각보다 이해하기 쉽죠? 이제 여러분의 코드도 유연한 '요가 마스터'가 될 준비가 되었어요! 😎

마무리: 의존성 관리의 미래 🚀

자, 여러분! 우리는 지금까지 C# 프로젝트의 의존성 관리에 대해 깊이 있게 알아봤어요. NuGet 패키지 매니저부터 시작해서 의존성 주입, 인터페이스 활용, 레이어드 아키텍처, 그리고 의존성 역전 원칙까지! 정말 긴 여정이었죠? ㅋㅋㅋ 😄

그런데 여러분, 이게 끝이 아니에요! 기술은 계속 발전하고 있고, 의존성 관리 방법도 계속 진화하고 있어요.

앞으로 우리가 주목해야 할 트렌드는 뭘까요? 🤔

  • 마이크로서비스 아키텍처: 작은 서비스들로 나누어 관리하는 방식이 더 인기를 얻고 있어요.
  • 컨테이너화: Docker 같은 기술을 사용해 의존성을 패키징하는 방식이 늘어나고 있어요.
  • 서버리스 컴퓨팅: 클라우드 서비스를 활용해 의존성 관리를 더 쉽게 하는 방식도 주목받고 있어요.

이런 새로운 기술들을 활용하면, 의존성 관리가 더욱 쉬워질 거예요. 마치 마법처럼요! ✨

그래서 여러분, 계속해서 공부하고 새로운 기술을 익히는 게 중요해요. 재능넷에서 활동하는 여러분이라면 더더욱요!

마지막으로, 의존성 관리는 단순히 기술적인 문제가 아니에요. 이건 우리의 코드를 더 깔끔하고, 유지보수하기 쉽고, 확장 가능하게 만드는 철학이에요. 마치 우리가 살아가는 방식을 개선하는 것과 같죠.

여러분의 코드가 의존성 관리의 달인이 되길 바라요! 화이팅! 👊😄

관련 키워드

  • C#
  • 의존성 관리
  • NuGet
  • 의존성 주입
  • 인터페이스
  • 레이어드 아키텍처
  • DIP
  • 마이크로서비스
  • 컨테이너화
  • 서버리스

지적 재산권 보호

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2024 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

 운영하는 사이트 주소가 있다면 사이트를 안드로이드 앱으로 만들어 드립니다.기본 5000원은 아무런 기능이 없고 단순히 html 페이지를 로딩...

 주문전 꼭 쪽지로 문의메세지 주시면 감사하겠습니다.* Skills (order by experience desc)Platform : Android, Web, Hybrid(Cordova), Wind...

📚 생성된 총 지식 10,661 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2024 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창