Строительные блоки облачных и микросервисных приложений — это фундаментальные компоненты и методы, используемые при разработке и развертывании приложений в облачных средах с использованием архитектуры микросервисов. Вот несколько методов, обычно используемых при создании таких приложений, а также примеры кода:
- Контейнеризация с помощью Docker.
Docker — популярная платформа для контейнеризации, позволяющая упаковывать и развертывать приложения и их зависимости в изолированных контейнерах. Ниже приведен пример файла Dockerfile для микросервиса Node.js:
# Specify the base image
FROM node:14
# Set the working directory
WORKDIR /app
# Copy package.json and package-lock.json files
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy application files
COPY . .
# Expose the port
EXPOSE 3000
# Start the application
CMD ["node", "app.js"]
- Взаимодействие с Kubernetes.
Kubernetes — это платформа оркестрации контейнеров, которая управляет развертыванием, масштабированием и управлением контейнерными приложениями. Вот пример манифеста развертывания Kubernetes для микросервиса:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-microservice
spec:
replicas: 3
selector:
matchLabels:
app: my-microservice
template:
metadata:
labels:
app: my-microservice
spec:
containers:
- name: my-microservice
image: my-microservice:latest
ports:
- containerPort: 3000
- Обнаружение сервисов с помощью Consul.
Consul — это инструмент обнаружения сервисов, который позволяет микросервисам находить и взаимодействовать друг с другом. Вот пример использования обнаружения служб Consul на основе DNS в приложении Node.js:
const express = require('express');
const app = express();
const consul = require('consul')();
// Register the service
consul.agent.service.register({
name: 'my-microservice',
address: 'localhost',
port: 3000,
check: {
http: 'http://localhost:3000/health',
interval: '10s'
}
}, (err) => {
if (err) throw err;
console.log('Service registered with Consul');
});
// Handle incoming requests
app.get('/', (req, res) => {
res.send('Hello, World!');
});
// Start the server
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- Шлюз API с экспресс-шлюзом.
Экспресс-шлюз — это шлюз API, который действует как единая точка входа для клиентских запросов, предоставляя такие функции, как аутентификация, ограничение скорости и маршрутизация запросов. Вот пример настройки маршрута API с помощью Express Gateway:
http:
port: 8080
admin:
port: 9876
apiEndpoints:
myEndpoint:
host: localhost
paths: '/api/*'
serviceEndpoints:
myService:
url: 'http://localhost:3000'
routes:
- path: '/api/my-microservice/*'
serviceEndpoint: myService
methods: ['GET', 'POST']