Я могу
Помочь клиенту решить, какой сервер и хостинг использовать
Я могу работать с:
Обычными выделенными серверами:
- Hetzner
- Online
- HostDime
- servers.com
и другие
Виртуальными машинами на выделенных серверах — KVM и KVM в Proxmox VE.
Контейнерами Linux на выделенных серверах, также опционально с Proxmox VE.
VPS.
Облачными решениями:
- AWS
- Google Cloud
- Azure
- Alibaba Cloud
Наиболее распространенный вариант, который выбирают мои клиенты — это выделенный сервер Hetzner + контейнеры Linux. Я также рекомендую эту настройку из-за наилучшего соотношения производительности с достаточной гибкостью. Но в целом выбор хостинг-провайдера зависит от фактической и планируемой нагрузки.
Также рекомендую использовать облако только тогда, когда это оправдано: программная масштабируемость, многопользовательская поддержка по требованию, межрегиональные требования и т. д. По моему мнению, облако — не лучший вариант для такой простой настройки, как интернет-портал или магазин с постоянной нагрузкой: это будет стоить дороже и работать хуже. Люди склонны использовать облака неправильно.
После принятия решения о том, что использовать, я помогаю клиенту подписаться на услугу. Часто клиент делится доступом к услуге управления хостингом. Я храню пароли доступа клиентов с помощью частного решения sysPass.
Установить операционную систему и подключиться к набору DevOps
Я всегда стараюсь свести к минимуму часть настройки сервера, выполняемую вручную. Имеется большой опыт работы с Ubuntu и Debian и разработки пакетов инструментов и кода управления их конфигурацией. Как только ОС установлена, желательно также с автоматической подготовкой, я продолжаю декларативную настройку сервера с помощью кода.
Развернуть собственную инфраструктуру
Некоторым небольшим клиентам требуется собственная инфраструктура стека DevOps из-за правил, соображений безопасности и т. д. Именно поэтому я разработал специальный подход с учетом многопрофильности. Поэтому по желанию клиента можно развернуть собственный экземпляр клиента GitLab, сервер SaltStack и т. д., чтобы применять тот же подход, что и в моей собственной инфраструктуре, но используя собственные службы клиента. Конечно, клиент имеет гораздо больший контроль над основными компонентами, если они принадлежат ему.
Развернуть приложения
Есть опыт развертывания и настройки следующих приложений:
- nginx/php-fpm веб-сайты
- nginx/python веб-сайты
- nginx статические веб-сайты
- MySQL (Percona)
- PostgreSQL
- MongoDB
- RabbitMQ
- Rancher Kubernetes cluster
- Softether VPN Server
- Atlassian Jira Server and Confluence Server
- GitLab
и др.
Обеспечить долгосрочную поддержку
Мне нравятся решения, которые работают уже много лет. Я поддерживаю некоторые сервера для наших клиентов уже более 10 лет, осуществляя миграцию, обновляя ОС и приложения. Разрабатываю наши инструменты для унификации мониторинга и резервного копирования, которые необходимы для долгосрочной поддержки.
Обеспечить качественную разработку
Работаю с довольно простыми настройками. Моя идея заключается в предоставлении передовых технологий стека в качестве услуги для небольших клиентов, помочь им понять и использовать его преимущества.
Управлять правами доступа
Все серверы, которыми я управляю, используют закрытую политику брандмауэра. По умолчанию все входящие порты частных служб, такие как SSH и базы данных, закрыты из Интернета. С помощью инфраструктуры как кода (Infrastructure as Code — IaC) я управляю списками доступа статических IP-адресов, которым разрешено подключение. Использую частные VPN-серверы (SoftEther), если статические IP-адреса недоступны для клиента.
Управлять конфигурациями
Использую специальное решение для управления конфигурацией — SaltStack. На самом деле, я провожу большую часть нашего времени за написанием универсального и многократно используемого открытого исходного кода — формулы SaltStack и специфических для клиента переменных (компонент) и файлов, которые используются кодом для настройки серверов. Определяю и настраиваю клиентскую инфраструктуру (IaC), приложения, пользователей, IP-адреса, контрольные точки и пороги мониторинга, базы данных, источники и цели резервного копирования и т. д. Пытаюсь автоматизировать все, что могу, с помощью управления конфигурациями, поскольку она документирует инфраструктуру и обеспечивает повторяемость, надежность, безопасность и многие другие преимущества.
Предоставлять консультации
Не все разработчики программного обеспечения имеют опыт работы с фул-стеком и DevOps. Сосредоточиться на отдельной части технологии это хорошо и позволяет глубже погружаться, а также лучше понимать суть. Я консультирую небольшие группы разработчиков и помогаю им в использовании DevOps (Git, Docker, Kubernetes, Repositories, Registries, CI and Pipelines, Automation) с конкретными продуктами: GitLab, SaltStack, Rancher, Ubuntu.
Также могу предоставить командам разработчиков настройку динамических сред разработки, которые автоматически создаются и удаляются для веток или тегов Git в кластере Kubernetes с использованием GitLab и визуального доступа к кластеру Rancher. Это похоже на GitLab Auto-DevOps, но Auto-DevOps имеет больше ограничений. Кроме того, я могу хранить текущие данные в кластерах Kubernetes, а также настроить базы данных и хранилище только на классической инфраструктуре.
Возможны консультации о правильном использовании этих технологий:
- DNS (ClouDNS, Cloudflare).
- SSL-сертификаты (Let’s Encrypt automation using acme.sh, CertBot).
- Anti-DDOS (Cloudflare, Nginx).
- ветки, теги, подмодули, поток Git.
- MySQL (Percona), тонкая настройка PostgreSQL.
- Производительность сервера.
- Другие задачи администрирования сервера.
Я НЕ могу
Поддерживать устоявшуюся архитектуру
Я могу и хочу оказывать долгосрочную поддержку архитектуры, которую мы сделали вместе с клиентом. Но если клиентская инфраструктура была построена кем-то другим с использованием другого подхода, я теряю все преимущества IaC, автоматизации и т. д., тем не менее могу поддерживать и её. Могу переносить приложения из внешних систем и даже пытаться (если это возможно) устанавливать исправления в устаревших системах в процессе миграции, но только в качестве исключения и только в том случае, если есть обязательства по созданию новой инфраструктуры.
Идти на компромисс с нашими принципами
Например, я никогда не соглашаюсь отказаться от безопасной настройки сервера. Этот принцип может быть очень неудобен для разработчиков, и они пытаются саботировать его. Но этот подход имеет слишком много преимуществ с точки зрения безопасности, поэтому я не могу пойти другим путем. Всегда говорю клиенту, что не могу выполнить определенную задачу, потому что это ставит под угрозу безопасность Вашего сервера.
Использовать любые технологии
Я силен в построении различных архитектур, и все время развиваюсь, приобретая навыки работы с различными технологиями.. Не отказываю клиенту использовать любую технологию, которую он желает. Например, могу настроить Jenkins и его Pipelines или GitLab. Не могу использовать Ansible, Puppet или Chef, также имею опыт управления конфигурациями в SaltStack.
Брать на себя риски клиента
Несмотря на то, что у меня обычно есть root-доступ к серверам клиента, я не даю гарантии на 100% бесперебойную работу клиентского сервиса. Моя миссия заключается в предоставлении доступного комплексного решения для некоторых задач DevOps, а также максимально быстрого решения проблем, я стремлюсь сделать ваш сервис безотказным, насколько это возможно.
Удовлетворить всех
Я оставляю за собой право решать, согласен ли работать над конкретной задачей. И всегда стараюсь предоставить клиенту информацию о своих возможностях и о том, соответствует ли задача моему подходу или нет. Не могу написать код приложения клиента, исправить темы WordPress и т. д. А во всем остальном — давайте сотрудничать. Я готов предоставить Вам в пользование свой опыт и навыки в сферах , DevOps и CIO аутсорсинга прямо сейчас!
About The Author
Виктор