배치작업 WebJob 

Ex) 일일 재고수준 파악  외부 서비스에 보고 

 

Azure function 말고, 웹작업으로 하고 싶은 경우 

그리고 기존 웹서비스에는 영향없이 백그라운드로 돌리고 싶은 경우 

Ex) 고해상도이미지들 -> 썸네일 추출 

특정 DB 프로시져 호출하는 job 가능 

 

모두 지원 

Windows 배치 파일 

PowerShell 스크립트 

Bash 셸 스크립트 

 

업로드 가능 

 

Visual Studio를 사용하여 웹 작업을 컴파일된 콘솔 애플리케이션으로도 가능 

파이썬, node.js 기반 

 

 

크게  종류 

  1. 연속 

  2. 트리거  

Auzre Function Webjob 차이점 

거의 같으나, 

Fuction 

WebJob 

기존 웹소스와 별개로 관리 

기존 웹소스와 하나의 패키지로 관리가능 

 

JobHost 개체의 동작에 대해 더 정교하게 제어할 수 있다 

 

 

VS에서 실습 

콘솔애플리케이션을 만들어, webjob템플릿 사용가능, 기존 웹앱 솔루션에 추가 

각 프로그램, config 설명

 Program.cs 

애플리케이션의 진입점인 Main() Main에서 JobHost개체를 시작하고 구성 

JobHost는 웹 작업이 배포된 후 Azure와 통신하는 개체  

new HostBuilder() 

Functions.cs 

 작업이 실행하는 실제 작업 내용 코딩 

 

settings.json 

cron식으로 일정 기록 

{ "schedule": "0 0 12 * * ?" } 

 

App.config 

DB연결, Azure Storage정보  연결문자열 기록 

 

functions.json 

 

바인딩을 사용하려면 사용 

Direction in / out  

 

 

CRON  

설명 

0 0 12 * * ? 

매일  12시에 실행 

0 15 10 * * ? 

매일 오전 10 15분에 실행 

0 15 10 ? * MON-FRI 

매주 평일 오전 10 15분에 실행 

0 15 10 ? * 6L 

매월 마지막  금요일 10 15분에 실행 

 

APP템플릿 통해서 만들면, 아래와 같은 네임스페이스가 그냥 들어오겠지? 

  • Microsoft.Azure.WebJobs 

  • Microsoft.Azure.WebJobs.Extensions 

 프로그램에서 활용하려면 위와 같은 네임스페이스 추가 

 

예시) 

Azure Storage SDK를 사용하여 설정된 간격으로 스토리지 계정에 큐 메시지를 만듭니다.  

스토리지 계정에서 로그 확인 가능 

단순하게, 특정 메시지(시간기록) Azure Queue 기록 

 

var queue = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageAccount"].ConnectionString) 

    .CreateCloudQueueClient() 

    .GetQueueReference("stockchecks"); 

 

queue.CreateIfNotExists(); 

 

while (true) 

{ 

    var timestamp = DateTimeOffset.UtcNow.ToString("s"); 

 

    var message = new CloudQueueMessage($"Stock check at {timestamp} completed"); 

    queue.AddMessage(message); 

 

    Thread.Sleep(TimeSpan.FromSeconds(30)); 

} 

 

 

Main함수에 아래와 같이 사용 

(기존 무한루프 형식 안써도 ) 

static void Main(string[] args) 

{ 

    var builder = new HostBuilder(); 

    builder.ConfigureWebJobs(b => 

            { 

                b.AddAzureStorageCoreServices(); 

            }); 

    var host = builder.Build(); 

    using (host) 

    { 

        host.Run(); 

    } 

} 

 

 

<바인딩> 

아래   각종 트리거를 바인딩하는 형태 예시 

 트리거 발동  비즈니스 로직 수행하도록 개발 

바인딩을 사용하려면 웹 프로젝트에 functions.json 기록 Direction in/out  있음  

Azure 큐에 메시지가 들어올때 

public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger) 

{ 

    logger.LogInformation(message); 

} 

Azure Storage 신규 blob파일이 추가될때 

[FunctionName("BlobTriggerCSharp")] 

public static void Run([BlobTrigger("watchescontainer/{name}")] Stream watchInstructions, string name, ILogger log) 

{ 

    log.LogInformation($"A new blob was added.\n Name:{name} \n Size: {watchInstructions.Length}"); 

} 

 

Azure CosmosDB 신규 데이터가 들어올  특정 database, 컬력션명 지정 

[FunctionName("CosmosTrigger")] 

public static void Run([CosmosDBTrigger( 

    databaseName: "ToDoItems", 

    collectionName: "Items", 

    ConnectionStringSetting = "CosmosDBConnection", 

    LeaseCollectionName = "leases", 

    CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents, 

    TraceWriter log) 

{ 

    if (documents != null && documents.Count > 0) 

    { 

        log.Info($"Documents modified: {documents.Count}"); 

        log.Info($"First document Id: {documents[0].Id}"); 

    } 

} 

 

 

추가 예시 

기존 ProcessQueueMessage 메서드를 아래와 같이 바꿔서 사용가능 

 

public static void ConfirmStockCheck([QueueTrigger("stockchecks")] string message, [Blob("confirmations/{id}")] out string output) 

{ 

    var timestamp = message.Split()[3]; 

    output = $"{timestamp} stock check successfully processed"; 

} 

 

stockchecks 큐의 메시지를 처리하고 해당 메시지를 사용하여 confirmations 컨테이너에 BLOB을 만듭니다. 웹 작업 SDK는 stockchecks 큐의 모든 메시지에 대해 이 함수를 한 번 호출하며, message 매개 변수는 메시지 내용을 포함합니다. output의 값은 confirmations 컨테이너의 새 BLOB에 자동으로 기록됩니다. 새 BLOB의 이름은 함수를 트리거한 큐에서 수신된 메시지의 메시지 ID입니다. 

 

 




'기술(Azure 만...) > [MS]Azure PaaS' 카테고리의 다른 글

웹앱 스케일링  (0) 2019.09.02
webapp 소스 가져오기, sync 다양한 방법  (0) 2019.08.13
Azure SQL databse , 스케일링  (0) 2019.05.15
CosmosDB 실습  (0) 2019.03.29
PaaS WebApp Application Insights  (0) 2019.03.29

Azure 에서 데이터를 저장하는 여러가지 방법 

 

 

Blob, Files, , 테이블 === 하나의 스토리지계정으로 그룹화가능 

논리적인 컨테이너 개념 

 

Azue SQL, cosomosdb 등은 별도의 독립된 리소스로 관리됨 

 

구조적데이터 

Azure SQL databse 

반구조적데이터 

Azure CosmosDB, Azure Tables, Azure Queue 

비구조적 데이터 

Blob Storage 

 

 

 

 

스토리지에 매핑되는 개념들 

구독 

자기구독 

위치 

데이터센터 위치, 저장되는 위치 

성능 

표준, 프리미엄(SSD) 

복제 

LRS, GRS,  

액세스 계층 

,  

보안전송여부 

HTTP, HTTPS 

가상네트워크 

가상네트워크 지정 가능 

계정종류 

범용V2, 범용V1, Blob 스토리지 

 

 

, 중요한 데이터여부에 따라 스토리지계정을 분리해야됨. 

복제옵션 등을 다르게 설정해줘야되기 때문 

 

성능요구사항에 따라도 스토리지 계정 분리 

표준, 프리미엄 

 

그리고 비용의 최소화를 위해서 나눠야 . 

이것도 복제옵션, 액세스계층 

 

 

계정종류 

V1 옛날거네..., 왠만하면 V2 최신으로...선택 

StorageV2(범용 v2) 

 모든 스토리지 형식  모든 최신 기능을 지원하는 현재 제품입니다. 

스토리지(범용 v1):  

모든 스토리지 형식을 지원하는 레거시 종류이지만 모든 기능을 지원하지 않을  있습니다 

Blob 스토리지 

블록 Blob  추가 Blob만을 허용하는 레거시 종류 

 




Azure에서는 NSG를 기준으로 해서 트래픽분석이 가능하다.

flow 로그는 한국남부도 수집이 되지만, Traffic Analytics 는 남부는 지원되지 않는다.

 

그럼, flow 로그만으로도, 제공되는 파워BI 템플릿을 통해 아래와 같은 그림 정도는 확인가능하다.

템플릿 다운로드 및 설명 경로 : https://docs.microsoft.com/ko-kr/azure/network-watcher/network-watcher-visualize-nsg-flow-logs-power-bi

먼저 원되는 지역

지원되는 다음 지역 중 하나에서 NSG용 트래픽 분석을 사용할 수 있습니다.

  • 캐나다 중부

  • 미국 중서부

  • 미국 동부

  • 미국 동부 2

  • 미국 중북부

  • 미국 중남부

  • 미국 중부

  • 미국 서부

  • 미국 서부 2

  • 프랑스 중부

  • 서유럽

  • 유럽 북부

  • 브라질 남부

  • 영국 서부

  • 영국 남부

  • 오스트레일리아 동부

  • 오스트레일리아 남동부

  • 동아시아

  • 동남아시아

  • 한국 중부
  • 중앙 인도

  • 인도 남부

  • 일본 동부

  • 일본 서부

  • US Gov 버지니아

Log Analytics 작업 영역이 다음 지역에 있어야 합니다.

  • 캐나다 중부

  • 미국 중서부

  • 미국 서부 2

  • 미국 동부

  • 프랑스 중부

  • 서유럽

  • 영국 남부

  • 오스트레일리아 남동부

  • 동남아시아

  • 한국 중부

  • 중앙 인도

  • 일본 동부

  • US Gov 버지니아

 

한국남부 리전은 Flow logs 까지만 설정 가능함 -> 파워BI 분석 

( 이상함, 모든 데이터가 없는  같음) 

 

밑에 Traffic Analytics status 한국남부리전 지원하지 않음 

저장하려고 하면, 해당 리전 not support라고 나옴. 

 

Traffic Analytics를 통해서는 아래와 같은 것들을 볼수있다.

트래픽 핫스폿 찾기 

지리별로 트래픽 분포 시각화 

가상 네트워크별로 트래픽 분포 시각화

인터넷에서 트래픽을 수신하는 포트  가상 머신 보기 

NSG/NSG 규칙 적중의 추세 시각화 




'기술(Azure 만...) > [MS]Azure기본' 카테고리의 다른 글

ACR Azure Container Registry  (0) 2019.05.09
Azure Storage 일반  (0) 2019.05.04
SSVM 기본이미지, 기본VM은 어떻게  (0) 2019.04.30
SSVM (Azure Scaleset VM)  (0) 2019.04.30
Azure 보안 설계 기본  (0) 2019.04.05

+ Recent posts