- Added comprehensive course structure with 11 modules - Included theoretical content, practical examples, and tasks - Multi-language code examples (Java, Rust, Node.js, Python) - Detailed analysis of architectural approaches and trade-offs - Complete caching strategies documentation - Architecture examples from real-world systems (Twitter, Netflix, Uber) - Structured navigation and learning path - Ready for educational use
413 lines
11 KiB
Markdown
413 lines
11 KiB
Markdown
# Azure (Microsoft Azure)
|
||
|
||
## Навигация
|
||
- [🏠 Главная страница курса](../../../README.md)
|
||
- [📚 Модуль 8](../README.md)
|
||
|
||
---
|
||
|
||
## Основные сервисы Azure
|
||
|
||
### 1. Compute Services
|
||
|
||
#### Virtual Machines
|
||
- Виртуальные серверы в облаке
|
||
- Различные серии (B, D, E, F, G, H, L, M, N)
|
||
- Автомасштабирование с Virtual Machine Scale Sets
|
||
- Spot VMs для экономии
|
||
|
||
```yaml
|
||
# Azure VM Configuration
|
||
apiVersion: 2021-03-01
|
||
type: Microsoft.Compute/virtualMachines
|
||
properties:
|
||
hardwareProfile:
|
||
vmSize: Standard_B1s
|
||
storageProfile:
|
||
imageReference:
|
||
publisher: Canonical
|
||
offer: UbuntuServer
|
||
sku: 18.04-LTS
|
||
version: latest
|
||
osDisk:
|
||
createOption: FromImage
|
||
managedDisk:
|
||
storageAccountType: Standard_LRS
|
||
osProfile:
|
||
computerName: my-vm
|
||
adminUsername: azureuser
|
||
adminPassword: !Ref AdminPassword
|
||
networkProfile:
|
||
networkInterfaces:
|
||
- id: !Ref NetworkInterface
|
||
```
|
||
|
||
#### Azure Functions
|
||
- Serverless вычисления
|
||
- Поддержка различных языков
|
||
- Интеграция с другими Azure сервисами
|
||
|
||
```javascript
|
||
// Azure Function Example
|
||
module.exports = async function (context, req) {
|
||
context.log('Processing order request');
|
||
|
||
const order = req.body;
|
||
|
||
// Валидация заказа
|
||
if (!order || !order.customerId || !order.items) {
|
||
context.res = {
|
||
status: 400,
|
||
body: { error: 'Invalid order data' }
|
||
};
|
||
return;
|
||
}
|
||
|
||
// Обработка заказа
|
||
const orderId = await processOrder(order);
|
||
|
||
// Отправка уведомления
|
||
context.bindings.outputQueue = {
|
||
orderId: orderId,
|
||
status: 'processed',
|
||
timestamp: new Date().toISOString()
|
||
};
|
||
|
||
context.res = {
|
||
status: 200,
|
||
body: {
|
||
orderId: orderId,
|
||
status: 'processed'
|
||
}
|
||
};
|
||
};
|
||
|
||
async function processOrder(order) {
|
||
// Логика обработки заказа
|
||
return `ORD-${order.customerId}-${Date.now()}`;
|
||
}
|
||
```
|
||
|
||
#### App Service
|
||
- Платформа для веб-приложений
|
||
- Поддержка различных языков и фреймворков
|
||
- Автоматическое масштабирование
|
||
|
||
```yaml
|
||
# App Service Configuration
|
||
apiVersion: 2021-02-01
|
||
type: Microsoft.Web/sites
|
||
properties:
|
||
name: my-app
|
||
location: East US
|
||
kind: app
|
||
properties:
|
||
serverFarmId: !Ref AppServicePlan
|
||
siteConfig:
|
||
appSettings:
|
||
- name: WEBSITE_NODE_DEFAULT_VERSION
|
||
value: "18.0.0"
|
||
- name: NODE_ENV
|
||
value: "production"
|
||
alwaysOn: true
|
||
httpLoggingEnabled: true
|
||
detailedErrorLoggingEnabled: true
|
||
```
|
||
|
||
### 2. Storage Services
|
||
|
||
#### Blob Storage
|
||
- Объектное хранилище для файлов
|
||
- Различные уровни доступа (Hot, Cool, Archive)
|
||
- Интеграция с CDN
|
||
|
||
```yaml
|
||
# Azure Storage Account
|
||
apiVersion: 2021-02-01
|
||
type: Microsoft.Storage/storageAccounts
|
||
properties:
|
||
sku:
|
||
name: Standard_LRS
|
||
kind: StorageV2
|
||
accessTier: Hot
|
||
supportsHttpsTrafficOnly: true
|
||
minimumTlsVersion: TLS1_2
|
||
allowBlobPublicAccess: false
|
||
networkAcls:
|
||
defaultAction: Deny
|
||
bypass: AzureServices
|
||
```
|
||
|
||
#### Managed Disks
|
||
- Управляемые диски для VM
|
||
- Различные типы (Premium SSD, Standard SSD, Standard HDD)
|
||
- Автоматические бэкапы
|
||
|
||
### 3. Database Services
|
||
|
||
#### Azure SQL Database
|
||
- Управляемая реляционная БД
|
||
- Автоматические бэкапы и патчи
|
||
- Elastic pools для оптимизации затрат
|
||
|
||
```yaml
|
||
# Azure SQL Database
|
||
apiVersion: 2021-02-01
|
||
type: Microsoft.Sql/servers
|
||
properties:
|
||
administratorLogin: admin
|
||
administratorLoginPassword: !Ref AdminPassword
|
||
version: 12.0
|
||
publicNetworkAccess: Disabled
|
||
minimalTlsVersion: 1.2
|
||
databases:
|
||
- name: my-database
|
||
properties:
|
||
collation: SQL_Latin1_General_CP1_CI_AS
|
||
maxSizeBytes: 10737418240
|
||
requestedServiceObjectiveName: S0
|
||
```
|
||
|
||
#### Cosmos DB
|
||
- NoSQL база данных
|
||
- Глобальное распределение
|
||
- Множественные API (SQL, MongoDB, Cassandra, etc.)
|
||
|
||
```yaml
|
||
# Cosmos DB Configuration
|
||
apiVersion: 2021-03-15
|
||
type: Microsoft.DocumentDB/databaseAccounts
|
||
properties:
|
||
databaseAccountOfferType: Standard
|
||
locations:
|
||
- locationName: East US
|
||
failoverPriority: 0
|
||
isZoneRedundant: false
|
||
capabilities:
|
||
- name: EnableServerless
|
||
consistencyPolicy:
|
||
defaultConsistencyLevel: Session
|
||
enableAutomaticFailover: false
|
||
```
|
||
|
||
### 4. Networking Services
|
||
|
||
#### Virtual Network
|
||
- Изолированная виртуальная сеть
|
||
- Подсети и маршрутизация
|
||
- Интеграция с on-premises
|
||
|
||
```yaml
|
||
# Azure Virtual Network
|
||
apiVersion: 2021-02-01
|
||
type: Microsoft.Network/virtualNetworks
|
||
properties:
|
||
addressSpace:
|
||
addressPrefixes:
|
||
- 10.0.0.0/16
|
||
subnets:
|
||
- name: default
|
||
properties:
|
||
addressPrefix: 10.0.1.0/24
|
||
networkSecurityGroup:
|
||
id: !Ref NetworkSecurityGroup
|
||
- name: database
|
||
properties:
|
||
addressPrefix: 10.0.2.0/24
|
||
networkSecurityGroup:
|
||
id: !Ref DatabaseSecurityGroup
|
||
```
|
||
|
||
#### Load Balancer
|
||
- Распределение нагрузки
|
||
- Health checks
|
||
- SSL termination
|
||
|
||
```yaml
|
||
# Azure Load Balancer
|
||
apiVersion: 2021-02-01
|
||
type: Microsoft.Network/loadBalancers
|
||
properties:
|
||
frontendIPConfigurations:
|
||
- name: LoadBalancerFrontEnd
|
||
properties:
|
||
publicIPAddress:
|
||
id: !Ref PublicIP
|
||
backendAddressPools:
|
||
- name: BackendPool
|
||
loadBalancingRules:
|
||
- name: LBRule
|
||
properties:
|
||
frontendIPConfiguration:
|
||
id: !Ref LoadBalancerFrontEnd
|
||
backendAddressPool:
|
||
id: !Ref BackendPool
|
||
protocol: Tcp
|
||
frontendPort: 80
|
||
backendPort: 80
|
||
enableFloatingIP: false
|
||
idleTimeoutInMinutes: 4
|
||
```
|
||
|
||
### 5. Security Services
|
||
|
||
#### Azure Active Directory
|
||
- Управление идентификацией
|
||
- Single Sign-On (SSO)
|
||
- Multi-Factor Authentication (MFA)
|
||
|
||
#### Key Vault
|
||
- Управление секретами и ключами
|
||
- Шифрование данных
|
||
- Аудит доступа
|
||
|
||
```yaml
|
||
# Azure Key Vault
|
||
apiVersion: 2021-06-01-preview
|
||
type: Microsoft.KeyVault/vaults
|
||
properties:
|
||
sku:
|
||
family: A
|
||
name: standard
|
||
tenantId: !Ref TenantId
|
||
accessPolicies:
|
||
- tenantId: !Ref TenantId
|
||
objectId: !Ref UserObjectId
|
||
permissions:
|
||
keys: [get, list, create, delete, update, import, backup, restore, recover]
|
||
secrets: [get, list, set, delete, backup, restore, recover]
|
||
certificates: [get, list, create, delete, update, import, backup, restore, managecontacts, manageissuers, getissuers, listissuers, setissuers, deleteissuers]
|
||
enabledForDeployment: false
|
||
enabledForDiskEncryption: false
|
||
enabledForTemplateDeployment: false
|
||
enableSoftDelete: true
|
||
softDeleteRetentionInDays: 90
|
||
enableRbacAuthorization: false
|
||
```
|
||
|
||
### 6. Monitoring and Logging
|
||
|
||
#### Azure Monitor
|
||
- Мониторинг ресурсов и приложений
|
||
- Логи и метрики
|
||
- Алерты и автоматические действия
|
||
|
||
```yaml
|
||
# Azure Monitor Alert
|
||
apiVersion: 2021-02-01
|
||
type: Microsoft.Insights/metricAlerts
|
||
properties:
|
||
description: Alert when CPU exceeds 80%
|
||
severity: 2
|
||
enabled: true
|
||
scopes:
|
||
- !Ref VirtualMachine
|
||
criteria:
|
||
metricName: Percentage CPU
|
||
operator: GreaterThan
|
||
threshold: 80
|
||
timeAggregation: Average
|
||
actions:
|
||
- actionGroupId: !Ref ActionGroup
|
||
```
|
||
|
||
#### Application Insights
|
||
- APM (Application Performance Monitoring)
|
||
- Трассировка запросов
|
||
- Анализ производительности
|
||
|
||
### 7. Application Services
|
||
|
||
#### API Management
|
||
- Управление API
|
||
- Аутентификация и авторизация
|
||
- Rate limiting и throttling
|
||
|
||
```yaml
|
||
# API Management
|
||
apiVersion: 2021-08-01
|
||
type: Microsoft.ApiManagement/service
|
||
properties:
|
||
sku:
|
||
name: Developer
|
||
capacity: 1
|
||
publisherName: My Company
|
||
publisherEmail: admin@mycompany.com
|
||
notificationSenderEmail: notifications@mycompany.com
|
||
hostnameConfigurations:
|
||
- type: Proxy
|
||
hostname: myapi.azure-api.net
|
||
defaultSslBinding: true
|
||
```
|
||
|
||
#### Service Bus
|
||
- Очереди сообщений
|
||
- Topics и Subscriptions
|
||
- Dead letter queues
|
||
|
||
```yaml
|
||
# Service Bus Namespace
|
||
apiVersion: 2021-06-01-preview
|
||
type: Microsoft.ServiceBus/namespaces
|
||
properties:
|
||
sku:
|
||
name: Standard
|
||
tier: Standard
|
||
location: East US
|
||
tags:
|
||
Environment: Production
|
||
```
|
||
|
||
## Лучшие практики Azure
|
||
|
||
### 1. Resource Groups
|
||
- Организуйте ресурсы по проектам или средам
|
||
- Используйте теги для категоризации
|
||
- Применяйте принцип least privilege
|
||
|
||
```yaml
|
||
# Resource Group Organization
|
||
Resources:
|
||
ProductionRG:
|
||
Type: Microsoft.Resources/resourceGroups
|
||
Properties:
|
||
location: East US
|
||
tags:
|
||
Environment: Production
|
||
CostCenter: IT
|
||
Owner: Development Team
|
||
|
||
DevelopmentRG:
|
||
Type: Microsoft.Resources/resourceGroups
|
||
Properties:
|
||
location: East US
|
||
tags:
|
||
Environment: Development
|
||
CostCenter: IT
|
||
Owner: Development Team
|
||
```
|
||
|
||
### 2. Security
|
||
- Используйте Azure AD для аутентификации
|
||
- Включайте шифрование для всех данных
|
||
- Настройте Network Security Groups
|
||
- Используйте Private Endpoints для чувствительных сервисов
|
||
|
||
### 3. Monitoring
|
||
- Настройте Azure Monitor алерты
|
||
- Используйте Application Insights для приложений
|
||
- Мониторьте затраты с помощью Cost Management
|
||
- Настройте автоматическое масштабирование
|
||
|
||
### 4. Backup and Recovery
|
||
- Включите автоматические бэкапы
|
||
- Используйте Azure Site Recovery для disaster recovery
|
||
- Тестируйте процедуры восстановления
|
||
- Документируйте recovery procedures
|
||
|
||
### 5. Networking
|
||
- Используйте приватные подсети для баз данных
|
||
- Настройте NAT Gateway для исходящего трафика
|
||
- Используйте Private Endpoints для Azure сервисов
|
||
- Настройте NSG с минимальными правами
|