Ответ
Мой основной стек — это бэкенд-разработка на .NET (C#) с фокусом на создание масштабируемых и поддерживаемых веб-API и сервисов.
Бэкенд:
- Платформа: .NET 8+ (ранее .NET Core).
- Веб-фреймворк: ASP.NET Core (для REST API, gRPC, SignalR).
- ORM/Работа с данными: Entity Framework Core (для реляционных БД) + Dapper для высоконагруженных операций.
- Архитектура: Чистая архитектура (Clean Architecture), CQRS/MediatR, Domain-Driven Design (где уместно).
Базы данных и кэширование:
- Реляционные: PostgreSQL (предпочтительно), SQL Server.
- Документная БД: MongoDB (для специфичных сценариев).
- Кэширование: Redis (для сессий, кэша данных, распределенных блокировок).
Фронтенд (если требуется full-stack участие):
- TypeScript как основной язык.
- React с современным стэком (Hooks, Zustand/Redux Toolkit, React Query).
- Для внутренних админ-панелей иногда использую Blazor WASM.
Инфраструктура и DevOps:
- Контейнеризация: Docker, Docker Compose.
- Оркестрация: Kubernetes (базовый опыт), чаще управляемые сервисы (Azure Kubernetes Service, AWS EKS).
- Облака: Azure (App Services, Functions, Service Bus, Cosmos DB) или AWS (EC2, S3, SQS).
- CI/CD: GitHub Actions, GitLab CI, Azure DevOps Pipelines.
- Мониторинг и логи: Seq, ELK Stack (Elasticsearch, Logstash, Kibana), Application Insights.
Пример типичного слоя контроллера в моем проекте:
[ApiController]
[Route("api/v1/[controller]")]
[Authorize]
public class ProductsController : ControllerBase
{
private readonly IMediator _mediator;
public ProductsController(IMediator mediator)
{
_mediator = mediator;
}
[HttpGet]
[ProducesResponseType(typeof(PagedList<ProductDto>), StatusCodes.Status200OK)]
public async Task<IActionResult> GetProducts([FromQuery] GetProductsQuery query)
{
// Использование паттерна CQRS через MediatR
var result = await _mediator.Send(query);
return Ok(result);
}
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
public async Task<IActionResult> CreateProduct([FromBody] CreateProductCommand command)
{
var productId = await _mediator.Send(command);
return CreatedAtAction(nameof(GetProduct), new { id = productId }, null);
}
}
Инструменты: Git (GitFlow/Trunk-Based), Visual Studio / Rider, Postman, Swagger/OpenAPI.