Содержание
- + Методалогии разработки ПО
-
+
Проектирование систем
- + API
- + UML
- + Интеграции
- + Моделирование данных
- + Представление данных
- BPMN
- C4 model
- Domain Driven Design
- EPC
- IDEF0
- Архитектор
- Архитектура
- Интерфейс
- Карта экосистемы
- Когда стоит выбирать микросервисы
- Контекстная диаграмма
- Ролевая модель
- Проектирование систем
- + Развёртывание
-
–
Разработка
- + Git
- + Linux OS
- + Mac OS
- – Подходы организации кода
- + Языки программирования
- Виды программирования
- Интерпритатор
- Компилятор
- Разработка
-
+
Сеть
- + OSI
- + Защита
- CDN
- ngrok
- Сеть
- + Системный анализ
- + Требования
- + Хранение данных
- + Языки разметки
Должно соответствовать 12 уровням абстракции
Принипы
Кодовая база
Одна кодовая база в системе контроля версий - множество развертываний
Зависимости
Явно объявлять и изолировать зависимости
Обычно при помощи Пакетного менеджера
Сейчас зависимости выносят на уровень контейнера где запущено приложение
Конфигурация
Сохраняйте конфигурацию в среде выполнения
Сторонние службы (Baking Servises)
Считайте сторонние службы подключаемыми ресурсами
Например
База данных, внешние API и тд
Работать с ними осмысленно
Сборка, релиз, выполнение
Строго разделять стадии сборки и выполнения
Подход CI CD
Процессы
Запускать приложение как один или несколько процессов не сохраняющих внутреннее состояние (stateless)
Хранить состояние во вне (например в БД)
Проще масштабировать приложение
Приаязка портов (Port binding)
Приложение само должно слушать обращения на определённом порту
А не ожидать что там будет развернут веб-сервер
Камень в огород Python, PHP
Приложение должно быть самостоятельным
Параллелизм
Масштабировать приложение с помощью процессов
Если это stateless - просто
Если statefull - сложно
Утилизируемость (Disposabability)
Приложение должно правильно реагировать на сигналы ОС и быстро стартовать
Тогда оркестратор легко сможет стопнуть и поднять приложение
Паритет разработки/ работы приложения
Держите окружения разработки, промежуточного развёртывания (staging) и рабочего развёртывания (production) максимально похожими.
убрать различия:
-
Во времени - пишем код и сразу разворачиваем (CV/CD)
-
В персонале - разработчик пишет код, разворачивает и мониторит его работу
-
В инструментах - окружения развертывания должны быть максимально похож
Журналирование (Logs)
Рассматривать журнал как поток событий
Отправлять в stgout, откуда их будет забирать Collector log
Задачи администрирования
Выполняйте задачи администрирования/ управления
с помощью разовых процессов
Разовые процессы администрирования следует запускать в среде идентичной регулярным длительным процессам приложения. Они запускаются на уровне релиза, используя те же кодовую базу и конфигурацию, как и любой другой процесс, выполняющий этот релиз. Код администрирования должен поставляться вместе с кодом приложения, чтобы избежать проблем синхронизации.