인사이트

인사이트

새로운 관점으로 깊이 있는 통찰을 제시합니다.

SW 테크놀로지

알아두면 쓸모 있는 닷넷(.NET) 이야기

2021.05.12허형석
다운로드

들어가며

2020년 11월 10일, MS(마이크로소프트)는 차세대 애플리케이션 개발플랫폼 닷넷(.NET) 5.0을 공식 발표하였다.

 

그림1 닷넷5.0입니다. 닷넷5.0의 아키텍처를 나타내고 있습니다. 닷넷 스탠다드 위에 데스크톱, 웹, 클라우드, 모바일, 게이밍, IoT, 인공지능을 포괄적으로 지원합니다. 도구로는 비주얼스튜디오, 비주얼스튜디오 포맥, 비주얼스튜디오 코드, 커맨드라인인터페이스가 있습니다.

 

이는 닷넷 진영에 있어 꽤나 의미 있는 릴리스로 볼 수 있다. 오랫동안 파편화되어 있던 닷넷 관련 플랫폼이 닷넷이라는 단일 명칭으로 통합된 첫 릴리스이기 때문이다.

닷넷 5.0 출시 소식은 서버 개발 환경이 대부분 자바(Java)인 우리나라에서는 큰 반향을 일으키지 못했다. 하지만 세상 일이란 게 한 치 앞을 예상할 수 없는 법. 향후 소프트웨어 개발플랫폼 영역에 어떤 지각변동이 일어날 지 알 수 없으니 이번 기회에 닷넷에 관해 알아두는 것도 개발 상식 차원에서 의미가 있을 것으로 생각된다. 이에 본 아티클에서는 닷넷의 탄생부터 현재에 이르게 된 과정을 짚어보고 향후 전망을 살펴보겠다.

 

 

닷넷 프레임워크(.NET Framework), 그 시작과 한계

개발자가 아니더라도 윈도우(Windows)에서 프로그램을 설치하거나 실행할 때 [그림 2]와 같이 닷넷 프레임워크가 설치되는 것을 본 적이 있을 것이다. 윈도우 애플리케이션은 대부분 닷넷 프레임워크를 기반으로 개발되었다. 국내 소프트웨어 시장 전체에서 닷넷 프레임워크가 차지하는 비중이 크지는 않지만 제조·의료 분야 IT 시스템에서는 비교적 활발하게 사용되고 있다.

 

그림2 닷넷 프레임워크 설치 안내 메시지입니다. 이 애플리케이션은 닷넷 프레임워크 4.7.1 버전을 필요로 합니다. 닷넷 프레임워크를 설치하시겠습니까?라는 문구가 표시되어 있습니다.

 

닷넷 프레임워크는 2002년 2월 13일, MS가 내놓은 소프트웨어 플랫폼으로 C#이라는 객체지향 언어도 함께 출시하여 자바에 대항하고자 하였다. C# 언어는 빌드 후 IL(Intermediate Language, 중간 언어)로 변환되어 CLR(Common Language Runtime, 공통 언어 런타임)에서 실행되는 구조인데 자바의 바이트코드(Bytecode)와 JRE(Java Runtime Environment, 자바 실행 환경)로 생각하면 된다. 참고로 닷넷 프레임워크에서 지원하는 언어는 C#, F#, 비주얼 베이직(Visual Basic) 등이 있다.

통상적으로 윈도우용 애플리케이션은 닷넷 프레임워크 기반으로 개발하는 것이 생산성이 높고 성능도 좋다. 또한 사용 가능한 서드파티(3rd Party) 라이브러리도 풍부하다. 다만 대부분이 상용이고 윈도우 전용이다. 이같은 닷넷 프레임워크의 한계는 애플리케이션 생태계가 웹과 모바일 중심으로 변화하면서 더욱 두드러졌다.

게다가 기업들은 비용 절감을 위해 리눅스를 비롯한 오픈소스 소프트웨어 도입에 적극적으로 나서게 되었다. 라이선스 비용이 많이 드는 윈도우 기반의 서버가 아니더라도 수준 높은 웹 애플리케이션 서비스가 가능하게 된 것이다.

 

 

닷넷 코어(.NET Core)의 등장 – 크로스 플랫폼(Cross Platform)·오픈소스로

MS도 닷넷 프레임워크의 한계를 인식하고 대안을 마련하기 시작했다. 그 결과 2014년 닷넷 코어라는 이름으로 크로스 플랫폼을 지원하는 오픈소스 프레임워크를 출시한다. 아울러 MS는 닷넷 파운데이션(.NET Foundation)을 설립하여 오픈소스 진영으로 입지를 넓혀간다. 참고로 삼성전자도 닷넷 파운데이션의 기술운영위원회(Technical Steering Group)에 참여하고 있다. 삼성이 개발을 주도한 타이젠(Tizen) OS도 닷넷 앱을 지원한다.

 

그림3 닷넷코어입니다. 닷넷2015, 닷넷프레임워크, 닷넷코어, 공통일반 런타임과 컴파일러가 표기되어 있습니다. 닷넷코어에는 ASP닷넷, 닷넷네이티브, ASP닷넷 포 맥 앤드 리눅스가 있습니다.

 

MS는 닷넷 코어 출시와 함께 닷넷 표준 API 스펙인 닷넷 스탠다드(.NET Standard)도 발표하였다. 개발자가 닷넷 스탠다드 API만을 사용하여 라이브러리를 빌드해 배포하면 해당 닷넷 스탠다드 버전을 지원하는 닷넷 환경에서는 어디서든 참조 및 실행이 가능하다. 그러므로 다양한 플랫폼에서 공통적으로 사용하기 위한 라이브러리는 닷넷 스탠다드를 타깃으로 개발할 것을 권장하고 있다.

 

그림4 닷넷코어 및 닷넷 스탠다드입니다. 닷넷프레임워크와 닷넷코어, 엑스마린이 있고 닷넷스탠다드가 이 세가지 모두에 걸쳐 있습니다. 닷넷코어의 앱모델에는 콘솔, ASP.NET코어가 있고 기본 라이브러리에는 닷넷 코어 BCL이 있습니다.

 

 

.NET으로 대동단결

2020년 MS는 닷넷 프레임워크 4.8이 닷넷 프레임워크의 마지막 릴리스라고 발표하였다.

 

그림5 닷넷 프레임워크 4.8 릴리스 공지입니다. 닷넷프레임워크 4.8이 마지막 버전이며 버전업이 없을 것이라고 나와 있습니다. 닷넷 프레임워크의 월 단위 보안 및 버그 픽스 서비스를 계속 제공될 것이라고 합니다.

 

그동안 닷넷 프레임워크와 닷넷 코어로 나누어 지원하던 플랫폼을 닷넷(.NET)이라는 단일 이름으로 통일하기로 한 것이다. 그 시작 버전이 5.0인 것은 닷넷 코어의 최신 버전이 3.x이고 닷넷 프레임워크의 최신 버전이 4.8인 탓에 개발자 혼란을 줄이기 위해 이 둘을 아우르는 버전을 채택한 것이라고 한다.

닷넷 코어로 시작한 MS의 크로스 플랫폼 전략은 닷넷 5.0 출시로 새로운 전환기를 맞게 되었다. 클라우드 네이티브(Cloud Native) 시대, MSA(Microservices Architecture)의 유행 속에서 뒤늦은 감이 있지만 서비스 개발을 위한 선택지의 하나로 닷넷도 이름을 올릴 수 있게 된 것이다. (사실 닷넷 코어로도 이미 크로스 플랫폼 서비스 개발을 지원하기는 했다)

 

 

마치며

개인적으로는 닷넷의 미래 경쟁력이 꽤 있다고 생각한다. 기술적인 면은 물론이고 MS의 풍부한 SDK 지원 역량 -비주얼 스튜디오(Visual Studio), 비주얼 스튜디오 포 맥(Visual Studio For Mac), 비주얼 스튜디오 코드(Visual Studio Code)-과 애저(Azure)를 기반으로 한 클라우드와의 손쉬운 연동 등이 강점이 될 수 있다. 아울러 MSDN(Microsoft Developer Network)에 누적된 광범위한 기술 문서, FAQ 및 예제 등은 다른 플랫폼에 익숙한 개발자들이 닷넷으로 이동하는데 드는 어려움을 크게 줄여줄 것으로 생각된다. 특히 자바 개발자들도 적응하는데 큰 무리가 없을 것이다. C#의 문법은 객체지향 언어인 자바와 비슷하고, 패키지 관리는 누겟(Nuget)으로 하는데 자바의 메이븐(Maven)과 같은 개념으로 생각하면 된다.

이제 닷넷이라고 하면 윈도우만 떠올려서는 안된다. 바야흐로 닷넷은 맥(Mac), 리눅스 등 다양한 플랫폼에서 동작하고 개발할 수 있는 프레임워크가 되었으며 크로스 플랫폼, 오픈소스와 같이 핫한 키워드들에 보다 가까워졌다. MSA로 다양한 서비스를 개발하는 환경에 있어서도 닷넷은 자바(Springboot), 노드JS(Node.js), 파이썬(Python)과 더불어 좋은 대안이 될 수 있다.

향후 이어질 닷넷의 새로운 행보와 흥미로운 변화를 주목해보자.

 

# References

- https://devblogs.microsoft.com/dotnet/introducing-net-5
- https://docs.microsoft.com/en-us/archive/msdn-magazine/2017/september/net-standard-demystifying-net-core-and-net-standard
- https://devblogs.microsoft.com/dotNET/NET-core-is-open-source
- https://dotnetfoundation.org/blog/2016/06/27/samsung-join-tsg
- https://dotnetfoundation.org/about/technical-steering-group
- https://docs.tizen.org/application/dotnet/index
- https://devblogs.microsoft.com/dotnet/introducing-net-standard
- https://docs.microsoft.com/en-us/dotNET/framework/whats-new

허형석 프로

허형석 프로

에스코어㈜ 소프트웨어사업부 개발플랫폼그룹

소프트웨어 엔지니어링과 개발 도구, 개발 플랫폼에 관심이 많은 개발자입니다.