Roadmap для Data инженеров
В этой статье рассмотрим дорожную карту, как развиваться и что учить для тех, кто хочет стать Data engineerом.
💻 Фундаментальные знания
- Базовые знания terminal
- Data structures & algorithms - По ним описано много в этой статье
- APIs
- REST
- Structured vs unstructured data
- Сериализация
- Linux
- CLI
- Vim
- Shell scripting
- Cronjobs
- Как работает компютер?
- Как работает интернет?
- Git и другие Version control systems
- Математика & базис статистики
👩💻Языки программирования
Уделите ваше внимание не так изучению конкретного языка, больше узнайте как писать чистый, расширяемый код. Потратьте некоторое время на изучение парадигм программирования (функциональное и ООП) и лучших практик (шаблоны проектирования, GRASP, SOLID, антипаттерны) . Ознакомьтесь с IDE или редактором кода, например VSCode.
🧪 Тестирование
- Unit testing
- Integration testing
- Functional testing
📊 Database fundamentals
Для понимания в чем разница между разнаыми типами БД рекомендуем создать по 1 SQL, NoSQL, Graph, и тп. базе данных.
- SQL
- Нормализация
- ACID
- CAP теорема
- OLTP vs OLAP
- Вертикальное и горизонтальное масштабирование
- Dimensional modeling
Relational databases
Non-relational databases
Document databases
Wide column databases
Graph databases
Key-value stores
Data warehouses
- Snowflake
- Presto
- Apache Hive
- Apache Impala
- Amazon Redshift
- Google BigQuery
- Azure Synapse
- ClickHouse
Object storage
- AWS S3
- DigitalOcean Spaces
- Google Cloud Storage
- Apache Ozone
💽 Cluster computing fundamentals
Большинство современных data processing фреймворков в некоторой степени основаны на Apache Hadoop и MapReduce. Понимание этих концепций поможет вам быстрее освоить современные фреймворки обработки данных.
- Apache Hadoop
- HDFS
- MapReduce
- Lambda & Kappa architectures
Managed Hadoop
💾 Data processing
Batch
Hybrid
Гибридные могут обрабатывать как batch, так и streaming данные. Обработка данных в батчах часто выполняется analytical data warehouse приложениями
Streaming
- Apache Kafka
- Apache Storm
- Apache Samza
- Amazon Kinesis
Messaging
- RabbitMQ
- Apache ActiveMQ
- Amazon SNS & SQS
- Google PubSub
- Azure Service Bus
🕐 Workflow scheduling
- Apache Airflow
- Google Composer
- Apache Oozie
- Luigi
🕵️ Мониторинг инфраструктуры и приложений
- Prometheus – мониторинг систем таких как: серверы, базы данных, отдельные виртуальные машины, приложение и другое.
- Grafana – платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.
- DataDog
- Sentry
- Monte Carlo
- Datafold
- Soda Data
- StatsD
🕸️ Сети, безопасность и протоколы
- HTTP (протокол передачи гипертекста);
- SSL (обеспечивает защищенный обмен данными);
- SSH (сетевой протокол, позволяющий производить удаленное управление операционной системой);
- FTP (протокол передачи файлов);
- SMTP (простой протокол передачи почты)
- IMAPS
- POP38
- DMARC
- SPF
- Doman Keys
- Перенаправление портов
- IPSec & VPN
- AT-TLS
- OSPF Authentication
- SNMP
- Firewall
- Proxy
🏘️ Инфраструктура как код
Инфраструктура как код (IaC) – это по сути настройка и подъем всей инфраструктуры в виде конфигурационных файлов, с помощью которых легко подымать новые серверы и масштабировать старые.
Контейнеры
- Docker – это программная платформа для быстрой разработки, тестирования и развертывания приложений. Docker упаковывает ПО в стандартизованные блоки, которые называются контейнерами. Каждый контейнер включает все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения. Благодаря Docker можно быстро развертывать и масштабировать приложения в любой среде и сохранять уверенность в том, что код будет работать.
- LXC – Linux containers система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы