AZ-204 Certified: 7-Day App Service General settings

앱 일반 설정이란?

App Service 앱의 기본적인 동작 방식과 환경을 설정하는 부분이다. 쉽게 말하면 앱이 어떻게 작동하고 어떤 환경에서 실행될지를 지정하는 것이다. 이러한 일반 설정은 앱의 성능, 호환성 및 보안에 중요한 영향을 미친다.

테스트를 위한 Web application 신규 작성

Free tier – Azure Web Application
Wep Application – Configuration – General Settings

스택(Stack) 설정

앱이 실행되기 위해 필요한 소프트웨어의 조합을 정의하는 부분이다. 스택 설정을 통해 앱이 어떤 환경에서 작동할지 사용자 정의가 가능하다.

언어 및 SDK 버전

  • 앱을 개발하고 실행하는 데 사용되는 프로그래밍 언어와 SDK(Software Develope Kit)의 버전을 설정
  • .NET, Node.js, Python 같은 개발 언어와 그에 해당하는 SDK를 선택 가능

Linux 앱 및 사용자 지정 컨테이너

  • Linux 앱 및 사용자 지정 컨테이너의 경우 추가 설정이 가능
  • 앱이 시작할 때 실행할 특정 명령어 및 파일 지정이 가능
    예) 데이터베이스 연결 설정, 초기화 스크립트 등

플랫폼(Platform) 설정

Bit (32Bit 또는 64Bit)

비트는 컴퓨터가 데이터를 처리하는 ‘너비’ 를 의미한다.

Default settings

WebSocket 프로토콜

웹사이트와 서버 간의 실시간 통신을 위한 기술

예) 실시간 채팅 앱의 경우 ASP.NET SignalR 또는 소켓.io

Always On

앱이 항상 켜져 있고 준비된 상태를 유지하는 기능

Tip. 트래픽이 없어도 앱은 항상 가동하도록 변경 (기본적으로 20분 후 종료됨)

Default settings

HTTP Version

웹 통신 규약의 버전을 설정한다.

Tip.최신의 HTTPS/2 프로토콜1을 이용하려면 2.0으로 설정

Default settings

ARR 2선호도

사용자가 Web App을 사용할 때 같은 서버 인스턴스로 계속 연결 되게 설정한다.

Tip. 상태를 저장하지 않는 앱3에서는 꺼도 괜찮다.

Default settings

수신 클라이언트 인증서

보안을 강화하기 위해서 클라이언트 인증서를 요구한다. 특히 상호 인증 시스템에서 중요하다.

Tip. TLS 상호 인증4을 통해 앱의 접근을 제한한다.

Default settings

디버깅

앱에서 발생하는 문제를 원격으로 찾아 해결할 수 있다.

Tip. ASP.NET, ASP.NET Core, Node.js 앱에서 사용 가능

Learning Note

  1. HTTPS/2 프로토콜이란?

    웹 통신의 성능을 향상시키기 위해 개발된 새로운 HTTP 버전이다.
    웹 페이지 로딩 속도를 높이고 네트워크 효율을 개선하여 사용자에게 더 나은 경험을 제공할 수 있다.

    1. 멀티플렉싱(Multi-flexing) 기능: 하나의 연결(Session)로 여러 요청과 응답을 동시에 처리한다.
    결과적으로 페이지 로딩 시간이 단축되고 서버 처리 효율이 향상된다.

    2. 서버 푸시(Push) 기능: 서버가 클라이언트에게 능동적으로 리소스를 보낼 수 있다.
    ↩︎
  2. ARR(Application Request Routing) 선호도(Affinity) 이란?

    사용자가 웹 사이트에 처음 연결할 때 선택된 서버에 계속 연결되도록 하는 기능이다. 다른 말로 세션 어피니티(Session Affinity)라고도 한다. 한 사용자의 모든 요청이 동일한 서버 인스턴스로 보내지도록 하는 것이다.

    장점: 사용자의 세션(ex: 로그인 정보, 카트 목록)이 일관되게 유지할 수 있다.
    Tip. 위 기능이 비활성화되어 있는 경우, 사용자가 다른 서버에 연결될 때마다 정보가 초기화된다.
    ↩︎
  3. 상태를 저장하지 않는다의 의미는?

    사용자의 요청 또는 상호작용이 서로 독립적이며, 시스템의 단순성과 확장성을 높인다는 의미이다.

    웹 앱 또는 서비스에서 ‘상태를 저장한다’는 것은 사용자의 요청 및 변화를 기억하고 이를 바탕으로 작동한다는 뜻이다. 예를 들어, 온라인 쇼핑몰에서 카트에 상품을 추가하면 그 정보가 서버에 저장되어 나중에도 그 상품이 카트에 남이있게 된다. 바로 사용자(계정)의 ‘상태’를 저장하고 작동하는 것이다.

    ‘상태를 저장하지 않는다’는 것은 각 요청이 독립적이기 때문에 시스템이 심플하고 안정적이다. 또한 여러 서버에 요청을 분산시킬 때 각 서버가 ‘상태 정보’를 공유할 필요가 없기 때문에 확장성이 높아진다.
    ↩︎
  4. TLS 상호 인증이란?

    일반적으로 웹 사이트에 접속할 때 TLS(Transport Layer Security) 프로토콜이 사용된다. 왜냐하면, 웹 사이트(서버)가 자신이 진짜임을 증명해야 하기 때문이다. 이를 ‘단방향 인증’이라고 한다.

    그러나 더 높은 수준의 보안이 필요한 경우 TLS ‘상호 인증’이 사용된다. 상호 인증에서는 클라이언트도 자신이 진짜임을 증명해야 한다. 즉, 양측이 서로의 신분을 증명하는 것이다.

    Tip. 서버와 클라이언트는 서로 자신의 인증서*를 제공하고 상대방은 이를 검증한다. ↩︎