logo
logo
백엔드
ASP.NET
MS가 개발하여 판매하는 웹 애플리케이션 프레임워크이며 프로그래머들이 동적인 웹 사이트, 웹 애플리케이션, 웹 서비스를 만들 수 있도록 도움
StackOverflow 질문 수: 374690
Github Stars : ★ 36352
사용 기업
이커머스
부동산/인테리어
헬스케어
소셜/컨텐츠
여행
교육
기타
techstack-logo
트렌비
techstack-logo
직방
techstack-logo
티몬
techstack-logo
비브로스
techstack-logo
미스터블루
techstack-logo
셀메이트
techstack-logo
유니크굿컴퍼니
techstack-logo
데브시스터즈
techstack-logo
위메프
techstack-logo
지마켓
techstack-logo
에듀윌
techstack-logo
에피드게임즈
techstack-logo
현대자동차그룹
기술 블로그 글
지마켓
Windows Container 에 대해 알아보기
안녕하세요 Dev Platform & Corporate IT팀 팀 박진규입니다.이번 포스팅에서는 Windows Container에 대한 내용을 공유드리려 합니다.제가 담당하는 서비스들 중에서는 Windows OS에 종속적인 서비스들이 존재하는데,(ex. net framework)어느 날 이러한 서비스들을 Container 위에서 동작시킬 수 없을까 의문이 들었습니다.일반적으로 Container는 Linux 기반이다 보니,Windows에서는 이를 어떻게 해결할 수 있을까 찾아보던 도중Windows Container에 대해 알게 되었고,이에 대한 내용을 정리해서 공유드립니다.Windows Container 란?Windows 어플리케이션을 Windows Server 환경에서 격리하여 실행하기 위한 기능입니다.Windows Server 2016부터 지원되고 있습니다.Linux 컨테이너와 유사하게 애플리케이션을 독립된 환경에서 실행하지만Windows 컨테이너는 Windows 커널을 기반으로 실행됩니다.Windows Container 특이점1. 기본 이미지Windows Container 는 Microsoft에서 제공해 주는 4가지 종류의 기본 이미지를 사용해서 빌드가 가능합니다.각 이미지는 포함된 Windows 기능들이 다르기 때문에 상황에 따라 필요한 이미지를 선택하여 사용하시면 됩니다.(포함된 기능이 많을 수록 이미지 크기가 커집니다.)Microsoft에서는 대부분의 사용자에게 Windows Server Core 및 Nanoserver 를 추천하고 있습니다.아래는 직접 docker pull로 기본 이미지를 받았을 때이미지 사이즈를 정리한 내용입니다.이미지 종류이미지 사이즈특이사항Nano Server약 300 MB Server Core약 5 GB Windows약 9 GBwindows server 2019 까지만 지원합니다. (ltsc2019)windows server 2022 부터는 Windows Server 이미지를 사용해야 합니다.Windows Server약 10 GBwindows server 2022 부터 지원합니다. (ltsc2022) 2. 호환성Windows Container를 구동하기 위해서는 별도의 컨테이너 호환성 요구 사항이 존재합니다. Windows에서는 Linux와 다르게 사용자 모드와 커널 모드가 긴밀하게 결합되어 있고이로 인해 Windows Container 는 Host 서버의 Windows OS 버전에 따라 구동이 불가능한 경우가 생깁니다. 대표적으로 Windows 10 환경에서는 Windows Server 2022 이미지의 Container를 구동하는 게 불가능합니다. 실제로 Windows 10 환경에서 Windows Server 2022 이미지의 Container를 실행할 경우 아래와 같은 오류가 발생합니다.docker: a Windows version 10.0.20348-based image is incompatible with a 10.0.19043 host..Net Framework App을 Windows Cont
aspnet
docker
네이버
프로파일링 적용기 - 당신의 Go 애플리케이션은 좀 더 나아질 수 있다
애플리케이션의 성능을 효과적으로 향상하는 방법 중 하나는 병목 지점을 파악하고 해당 부분을 개선하는 것입니다. 프로파일링은 애플리케이션을 동적으로 분석하여 병목 지점의 파악을 용이하게 해줍니다. 그래서 많은 언어가 직간접적으로 프로파일링 도구를 지원합니다.프로파일링은 단순히 문제의 원인 파악을 도와주는 것을 넘어서 이제 컴파일러 최적화에도 사용되고 있습니다. PGO(Profile-Guided Optimization)는 컴파일러가 애플리케이션 빌드 시 프로파일 데이터를 참고하는 최적화 기법입니다. 이미 LLVM, Chrome 등 많은 프로젝트가 PGO를 도입했습니다.네이버의 메일, 메시지 검색 서비스 등에 사용되는 신규 검색엔진 Noir는 Go로 작성되었습니다. Go는 프로파일링뿐만 아니라 1.21부터 PGO를 지원합니다. 하지만 Go의 프로파일링에 대하여 잘 정리가 되어있는 글이 드물어 적용 시 애를 먹었습니다.Noir에 적용하기 위해 정리했던 Go 애플리케이션 프로파일링 및 PGO에 대한 내용을 이번 글에서 공유합니다.Go에서 프로파일링해보기프로파일링은 메모리 사용량, 함수별 CPU 점유 시간, 트레이스 등 애플리케이션을 동적으로 분석하는 것을 말한다. 서비스 운영 중 메모리 누수가 점점 쌓이거나 혹은 특정 로직 실행이 너무 오래 걸리는 등의 문제의 원인 파악을 용이하게 해준다.pprof는 Go 애플리케이션 데이터를 프로파일링해 분석하는 도구이다. 호출 스택(call stack)과 기호화(symbolization) 정보가 담겨있는 프로토콜 버퍼를 분석한다. 그래서 프로파일링을 하려면 애플리케이션에 프로토콜 버퍼를 생성하는 로직을 넣는 선행 작업이 필요하다. 정리하면 다음과 같은 과정을 통해 프로파일링을 한다.애플리케이션에 프로토콜 버퍼 생성 로직 작성 애플리케이션 실행 후 체크하고 싶은 지점에서 프로토콜 버퍼 생성 pprof로 프로토콜 버퍼 분석Go를 사용하면 이러한 생성 로직을 직접 작성할 필요 없이 편리하게 pprof를 사용할 수 있다. 분석할 수 있는 항목은 다음과 같다.allocs: 메모리 할당을 샘플링한다.block: 동기화 메커니즘(synchronization primitives)에서 발생한 blocking을 트레이스한다.cmdline: 프로그램에서 발생한 명령줄 호출을 알 수 있다.goroutine: 현재의 모든 고루틴을 스택 트레이스한다.heap: 메모리에 할당된 살아있는 오브젝트를 샘플링한다.mutex: 충돌한 뮤텍스 홀더를 스택 트레이스한다.profile: CPU를 프로파일링한다.threadcreate: 새로 만들어진 OS 스레드를 스택 트레이스한다.trace: 현재 프로그램 실행을 스택 트레이스한다.이제 Go 애플리케이션 분석을 위해 pprof를 사용하는 방법을 소개한다.준비 과정 - graphviz 설치 및 프로토콜 버퍼 생성 로직 작성프로파일링을 할 때 분석 데이터를 시각 자료로 보면 빠르게 잘 이해할 수 있다. pprof로 시각화 자료를 만들려면 graphviz가 필요하다. 다음 명령으로 graphviz를
aspnet
go
삼성SDS
알아두면 쓸모 있는 .NET 이야기
2021-05-12 허형석 2020년 11월 10일, MS(마이크로소프트)는 차세대 애플리케이션 개발플랫폼 닷넷(.NET) 5.0을 공식 발표하였습니다. .NET - A unified platform DESKTOP - WPF, Windows Forms, UWP WEB - ASP.NET CLOUD - Azure MOBILE - Xamarin GAMING - Unity IoT - ARM32, ARM64 AI - ML.NET, NET for Apache Spark .NET 5 - .NET STANDARD, INFRASTRUCTURE(Running Components, Compilers, Lanugages) TOOLS - Visual Studio, Visual Studio for Mac, Visual Studio Code, Command Line Interface [그림 1] 닷넷 5.0(출처: https://devblogs.microsoft.com/dotnet/introducing-net-5) 이는 닷넷 진영에 있어 꽤나 의미 있는 릴리스로 볼 수 있습니다. 오랫동안 파편화되어 있던 닷넷 관련 플랫폼이 닷넷이라는 단일 명칭으로 통합된 첫 릴리스이기 때문입니다. 닷넷 5.0 출시 소식은 서버 개발 환경이 대부분 자바(Java)인 우리나라에서는 큰 반향을 일으키지 못했습니다. 하지만 세상일이란 게 한 치 앞을 예상할 수 없는 법. 향후 소프트웨어 개발플랫폼 영역에 어떤 지각변동이 일어날지 알 수 없으니 이번 기회에 닷넷에 관해 알아두는 것도 개발 상식 차원에서 의미가 있을 것으로 생각됩니다. 이에 본 아티클에서는 닷넷의 탄생부터 현재에 이르게 되는 과정을 짚어보고 전망을 살펴보겠습니다. 닷넷 프레임워크, 그 시작과 한계 개발자가 아니더라도 윈도우(Windows)에서 프로그램을 설치하거나 실행할 때 [그림 2]와 같이 닷넷 프레임워크(.NET Framework)가 설치되는 것을 본 적이 있을 것입니다. 윈도우 애플리케이션은 대부분 닷넷 프레임워크를 기반으로 개발되었습니다. 국내 소프트웨어 시장 전체에서 닷넷 프레임워크가 차지하는 비중이 크지는 않지만, 제조·의료 분야 IT 시스템에서는 비교적 활발하게 사용되고 있습니다. Application.exe - This application could not be started. This application requires one of the following versions of the .NET Framework: .NETFramework,Version=v4.7.1 Do you want to install this .NET Framework version now? [그림 2] 닷넷 프레임워크 설치 안내 메시지 닷넷 프레임워크는 2002년 2월 13일, MS가 내놓은 소프트웨어 플랫폼으로 C#이라는 객체지향 언어도 함께 출시하여 자바에 대항하고자 하였습니다. C# 언어는 빌드 후 IL(Intermediate Language, 중간 언어)로 변환되어 CLR(Common Language Runtime, 공통
aspnet
Copyright © 2025. Codenary All Rights Reserved.