Основою цього веб-сайту є не просто набір HTML-файлів, а повністю автоматизована, хмарна інфраструктура, розгорнута на AWS, що використовує сучасні передові практики DevOps.

Основним архітектурним принципом, що лежить в основі цього проєкту, є максимальна безпека в поєднанні з повною автоматизацією.

🏗️ Інфраструктура як код (IaC)

Вся інфраструктура налаштована та керується як код за допомогою Terraform, що забезпечує відтворюване, узгоджене та масштабоване середовище.

  • Обчислення: Додаток працює на інстансі Amazon Linux 2023 EC2 (t3.micro).
  • Мережа та безпека: Інстанс знаходиться в суворо ізольованій приватній підмережі AWS VPC. В нього відсутня публічна адреса IPv4, а вхідний доступ SSH (порт 22) повністю вимкнено для усунення зовнішніх векторів атак.
  • Маршрутизація: Вихідне підключення до Інтернету забезпечується виключно через IPv6 через вихідний інтернет-шлюз, що запобігає будь-якому неініціативному вхідному трафіку.
  • Веб-сервер: Легкий сервер Nginx забезпечує ефективну доставку статичних ресурсів.

Причина вибору архітектури на основі EC2 замість S3+CloudFront описана нижче в розділі Архітектурні компроміси та дизайнерські рішення.

Press "Follow the user's path".
👨‍💻 User
(Browser)
☁️ Cloudflare
(DNS / WAF / Cache)
AWS Region
VPC
Public Subnet
Application Load Balancer
Private Subnet
EC2 Instance
(Nginx Web Server)

🚀 Конвеєр CI/CD (дії GitHub)

Процес розгортання повністю автоматизований. Будь-який код, що надсилається до гілки main, запускає наступний робочий процес безперервної інтеграції та безперервного розгортання (CI/CD):

  1. Збірка: Запуск дій GitHub налаштовується для перевірки вихідного коду та компіляції статичного сайту за допомогою фреймворку Hugo.
  2. Пакет: Скомпільований сайт стискається в незмінний артефакт (site.zip).
  3. Доставка (AWS S3): Артефакт безпечно завантажується в приватний бакет Amazon S3, що регулюється суворими політиками IAM.
  4. Віддалене виконання (AWS SSM): Конвеєр надсилає команду розгортання через API AWS Systems Manager (SSM).
  5. Атомарне оновлення: Агент SSM, який безпечно працює в ізольованому екземплярі EC2, отримує артефакт з S3 через внутрішню мережу IPv6 та виконує атомарну заміну каталогів для Nginx, забезпечуючи розгортання без простоїв.
Ready to deploy. Click "Start pipeline".
Dev
GitHub
AWS S3
EC2
User

⚖️ Архітектурні компроміси та проєктні рішення

Хоча розміщення статичного вебсайту за допомогою Amazon S3 у зв’язці з Amazon CloudFront (CDN) є галузевим стандартом і безсерверним підходом, у цьому проєкті свідомо використовується архітектура на базі EC2.

Це рішення було зумовлене двома основними факторами:

  1. Оптимізація витрат: Ця конкретна архітектура гарантує, що вся інфраструктура та CI/CD пайплайн працюють абсолютно безкоштовно, залишаючись суворо в межах лімітів AWS Free Tier.
  2. Демонстрація навичок: Розгортання приватної VPC, налаштування вебсервера Linux з нуля та оркестрація безпечного пайплайну розгортання на основі pull-моделі через AWS SSM слугує практичною демонстрацією ширших компетенцій у галузі системної інженерії, мереж та безпеки. Це підкреслює глибоке розуміння базових сервісів AWS, що виходить за межі простого безсерверного хостингу статичних сайтів.

🔐 Безпека та принцип найменших привілеїв (PoLP)

Ця архітектура суворо дотримується принципу найменших привілеїв (Principle of Least Privilege):

  • Інстансу EC2 надано доступ лише для читання (read-only), який повністю обмежений конкретним S3 бакетом з артефактами.
  • Runner GitHub Actions використовує вбудовану (inline) IAM-політику, яка дозволяє операції s3:PutObject лише для визначеного префікса артефактів, і обмежує виконання ssm:SendCommand виключно тими інстансами, які мають тег ресурсу portfolio-web-instance.