Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
Каждый развивающий бизнес на определенном этапе своего жизненного цикла сталкивается с задачей масштабирования. Для монолитного приложения эта задача может оказаться сложнее, чем написать с нуля масштабируемую систему - потому что нужно учитывать миграцию данных и пользователей, а также недостаточные ресурсы.
Мы попытаемся понять, в каких случаях монолит распиливать стоит, а когда можно применить более простые подходы. Рассмотрим преимущества и недостатки монолитной архитектуры и микросервисной. Разберем несколько стратегий распиливания монолита, а также аспекты, которые необходимо учесть во время этого процесса.
Software craftsmanship 15 online: Reliability and ResiliencyPavel Veinik
Мы возобновляем после перерыва митапы Software Craftsmanship, и наш пятнадцатый митап будет посвящен надежности и устойчивости систем. Мы разберем stability, reliability, fault-tolerance, availability, resilience, узнаем как они связаны друг с другом и как можно их измерять, а также как разрабатывать устойчивые и надежные программы.
Также мы сформулируем принципы создания надежных систем, паттерны и антипаттерны надежности и устойчивости, отдельное внимание уделим устойчивости микросервисов в облаке.
План митапа:
Stability, reliability, fault-tolerance, availability, resilience, их связь и отличия
Архитектура и шаблоны availability
Шаблоны resilience
Техники fault tolerance
Устойчивости и надежность в облаке
какие бывают типы микросервисных архитектур (распределенный монолит, слои микросервисов, feature-based микросервисы) и как именно микросервисы взаимодействуют друг с другом в рамках того или иного типа.
Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
Каждый развивающий бизнес на определенном этапе своего жизненного цикла сталкивается с задачей масштабирования. Для монолитного приложения эта задача может оказаться сложнее, чем написать с нуля масштабируемую систему - потому что нужно учитывать миграцию данных и пользователей, а также недостаточные ресурсы.
Мы попытаемся понять, в каких случаях монолит распиливать стоит, а когда можно применить более простые подходы. Рассмотрим преимущества и недостатки монолитной архитектуры и микросервисной. Разберем несколько стратегий распиливания монолита, а также аспекты, которые необходимо учесть во время этого процесса.
Software craftsmanship 15 online: Reliability and ResiliencyPavel Veinik
Мы возобновляем после перерыва митапы Software Craftsmanship, и наш пятнадцатый митап будет посвящен надежности и устойчивости систем. Мы разберем stability, reliability, fault-tolerance, availability, resilience, узнаем как они связаны друг с другом и как можно их измерять, а также как разрабатывать устойчивые и надежные программы.
Также мы сформулируем принципы создания надежных систем, паттерны и антипаттерны надежности и устойчивости, отдельное внимание уделим устойчивости микросервисов в облаке.
План митапа:
Stability, reliability, fault-tolerance, availability, resilience, их связь и отличия
Архитектура и шаблоны availability
Шаблоны resilience
Техники fault tolerance
Устойчивости и надежность в облаке
какие бывают типы микросервисных архитектур (распределенный монолит, слои микросервисов, feature-based микросервисы) и как именно микросервисы взаимодействуют друг с другом в рамках того или иного типа.
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
Лекция на школе учителей 2018-11-05. Название слишком забористое, но в целом это более-менее системное и актуальное рассмотрение того, что происходит с языками программирования. Лекция прочитана перед изучением языка Питон (Python). Много ссылок
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
Для многих enterprise-разработка ассоциируется с бесконечным унаследованным кодом, устаревшими технологиями и неповоротливыми монолитами. Использование подходов построения сервис-ориентированной архитектуры может существенно улучшить ситуацию. Мы пишем небольшие приложения с чёткой зоной ответственности и покрытием модульными тестами, используем современные протоколы OData и OAuth, а legacy-приложения развиваем подключением повторно используемых модулей. В своем докладе я расскажу о том, чего удалось добиться за последние пару лет, какие роли мы выделили и с какими сложностями столкнулись.
Методики управления развитием ис на базе 1сHelen Kopteva
Данная презентация была представлена в ходе вебинара "Методики управления развитием ИС на базе 1С. СППР как возможный инструмент поддержки данных методик". Ведущий - Олег Демиденко, руководитель отдела внедрения, руководитель проектов компания "Кодерлайн".
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Тимур Шемсединов. "Архитектура программных систем на Node.js"
Обзор подходов к построению прикладных программных систем на Node.js, анализ и сравнение архитектурных принципов развертывания высоконагруженных прикладных облачных сервисов, масштабирование приватных кластеров на Node.js за пределы нескольких физических машин, концепция прикладной виртуальной машины, примеры ее реализации и внедрения, тенденции и перспективы в разработке приложений, обзор проблем платформы Node.js и пути их решения.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Руководство для программистов по устройству на работу в UnigineUnigine Corp.
Как присоединиться к нашей команде? На что мы обращаем внимание, когда отбираем будущих сотрудников? Какие сотрудники нужны нам прямо сейчас?
Ответы в Руководстве для программистов по устройству на работу в Unigine.
Обзор подходов к построению прикладных программных систем на Node.js, анализ и сравнение архитектурных принципов развертывания высоконагруженных прикладных облачных сервисов, масштабирование, тенденции и перспективы в разработке приложений, обзор проблем платформы Node.js и пути их решения.
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
Domain driven design (DDD) - отражение модели предметной области в код (Максим Цепков на Software People 2013). Подробнее http://mtsepkov.org/DDD_problem_and_solving
В докладе будет:
- что такое F.I.R.S.T
- организация кода приложения для повышения его тестируемости, поддерживаемости и производительности
- какой тест-фреймворк выбрать для решения какой задачи?
- какие виды тестирования бывают и за какие из них отвечают разработчики?
- как тратить больше времени на код, а не на тесты
- как и какие метрики тестирования собирать
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
Лекция на школе учителей 2018-11-05. Название слишком забористое, но в целом это более-менее системное и актуальное рассмотрение того, что происходит с языками программирования. Лекция прочитана перед изучением языка Питон (Python). Много ссылок
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
Для многих enterprise-разработка ассоциируется с бесконечным унаследованным кодом, устаревшими технологиями и неповоротливыми монолитами. Использование подходов построения сервис-ориентированной архитектуры может существенно улучшить ситуацию. Мы пишем небольшие приложения с чёткой зоной ответственности и покрытием модульными тестами, используем современные протоколы OData и OAuth, а legacy-приложения развиваем подключением повторно используемых модулей. В своем докладе я расскажу о том, чего удалось добиться за последние пару лет, какие роли мы выделили и с какими сложностями столкнулись.
Методики управления развитием ис на базе 1сHelen Kopteva
Данная презентация была представлена в ходе вебинара "Методики управления развитием ИС на базе 1С. СППР как возможный инструмент поддержки данных методик". Ведущий - Олег Демиденко, руководитель отдела внедрения, руководитель проектов компания "Кодерлайн".
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Тимур Шемсединов. "Архитектура программных систем на Node.js"
Обзор подходов к построению прикладных программных систем на Node.js, анализ и сравнение архитектурных принципов развертывания высоконагруженных прикладных облачных сервисов, масштабирование приватных кластеров на Node.js за пределы нескольких физических машин, концепция прикладной виртуальной машины, примеры ее реализации и внедрения, тенденции и перспективы в разработке приложений, обзор проблем платформы Node.js и пути их решения.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Руководство для программистов по устройству на работу в UnigineUnigine Corp.
Как присоединиться к нашей команде? На что мы обращаем внимание, когда отбираем будущих сотрудников? Какие сотрудники нужны нам прямо сейчас?
Ответы в Руководстве для программистов по устройству на работу в Unigine.
Обзор подходов к построению прикладных программных систем на Node.js, анализ и сравнение архитектурных принципов развертывания высоконагруженных прикладных облачных сервисов, масштабирование, тенденции и перспективы в разработке приложений, обзор проблем платформы Node.js и пути их решения.
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
Domain driven design (DDD) - отражение модели предметной области в код (Максим Цепков на Software People 2013). Подробнее http://mtsepkov.org/DDD_problem_and_solving
В докладе будет:
- что такое F.I.R.S.T
- организация кода приложения для повышения его тестируемости, поддерживаемости и производительности
- какой тест-фреймворк выбрать для решения какой задачи?
- какие виды тестирования бывают и за какие из них отвечают разработчики?
- как тратить больше времени на код, а не на тесты
- как и какие метрики тестирования собирать
2. Гибкие команды требуют
качественной коммуникации
● Визуальная информация >80%
● TDD, ... не дает возможности быстро
оглядеть всю картину
● … и код тоже
● Не детальное моделирование мелочей, а
скетчи решения
3. Польза от скетчей
● Вся команда и новые участники легко
понимают общую картину
● Легко поделиться с командой, что ты
собираешься делать
● “Навигационная карта” по коду
● Пространство для анализа рисков
● Пространство для совместной работы
13. Внимание
● Принятым обозначениям и нотации
● Не стоит мешать разные уровни
абстракции между собой
● Простота
● Основанность на реальности
14. Context
● Что мы создаем?
● Кто это использует?
● Как это размещается в существующем
техническом окружении?
● Как это все взаимодействует друг с
другом?
15.
16. Container
● Из каких служб состоит система?
● Каковы базовые технологические решения и
выбранные технологии?
● Какое распределение ответственности в системе?
● Как “контейнеры” взаимодействуют друг с другом?
● Где писать код, чтобы реализовать функционал?
19. Component
● Из каких компонентов состоит система?
● Как сгруппирована бизнес-логика?
● Понятно ли прямо сейчас, как это будет
работать, когда написан код?
● Все ли компоненты принадлежат какой-
нибудь службе?
23. Еще UML
● Процессы и порядок выполнения:
Activity
● Поведение во время исполнения:
Sequence, Collaboration
● Модель предметной области:
Class, ER
● Граф состояний:
State
● Развертывание системы:
Deployment
Не понятно, что делает система, только указано, какие технологии в ней будут.
Очевидно, 3-х ярусная архитектура.
Круто видеть разбиение бизнес-логики на компоненты, но не понятна ответстенность каждого компонента и их взаимодействие
Просто перечислены элементы функциональной декомпозиции.
Что за зеленый кружок без подписи?
Слишком общее.
“Business logic”?
Не ясен выбор технологий.
по. С. Брауну
1. Context: A high-level diagram that sets the scene; including key system dependencies and
actors.
2. Container: A container diagram shows the high-level technology choices, how responsi-
bilities are distributed across them and how the containers communicate.
3. Component: For each container, a component diagram lets you see the key logical
components and their relationships.
4. Classes: This is an optional level of detail and I will draw a small number of high-level
UML class diagrams if I want to explain how a particular pattern or component will be (or
has been) implemented. The factors that prompt me to draw class diagrams for parts of the
software system include the complexity of the software plus the size and experience of the
team. Any UML diagrams that I do draw tend to be sketches rather than comprehensive
models.
Структура
* Users, actors, roles, personas, etc
* IT systems
Взаимодействие
Указывайте цель взаимодействия
By “containers”, I mean the logical executables or processes that make up your software system;
such as:
• Web servers (e.g. Apache HTTP Server, Apache Tomcat, Microsoft IIS, WEBrick, etc)
• Application servers (e.g. IBM WebSphere, BEA/Oracle WebLogic, JBoss AS, etc)
• Enterprise service buses and business process orchestration engines (e.g. Oracle Fusion
middleware, etc)
• SQL databases (e.g. Oracle, Sybase, Microsoft SQL Server, MySQL, PostgreSQL, etc)
• NoSQL databases (e.g. MongoDB, CouchDB, RavenDB, Redis, Neo4j, etc)
• Other storage systems (e.g. Amazon S3, etc)
• File systems (especially if you are reading/writing data outside of a database)
• Windows services
• Standalone/console applications (i.e. “public static void main” style applications)
• Web browsers and plugins
• cron and other scheduled job containers
Структура
Web servers1 (e.g. Apache HTTP Server, Apache Tomcat, Microsoft IIS, WEBrick, etc)
• Application servers (e.g. IBM WebSphere, BEA/Oracle WebLogic, JBoss AS, etc)
• Enterprise service buses and business process orchestration engines (e.g. Oracle Fusion
middleware, etc)
• SQL databases (e.g. Oracle, Sybase, Microsoft SQL Server, MySQL, PostgreSQL, etc)
• NoSQL databases (e.g. MongoDB, CouchDB, RavenDB, Redis, Neo4j, etc)
• Other storage systems (e.g. Amazon S3, etc)
• File systems (especially if you are reading/writing data outside of a database)
• Windows services
• Standalone/console applications (i.e. “public static void main” style applications)
• Web browsers and plugins
• cron and other scheduled job containers
Взаимодействие
• The purpose of the interaction (e.g. “reads/writes data from”, “sends reports to”, etc).
• Communication method (e.g. Web Services, REST, Java Remote Method Invocation,
Windows Communication Foundation, Java Message Service).
• Communication style (e.g. synchronous, asynchronous, batched, two-phase commit, etc)
• Protocols and port numbers (e.g. HTTP, HTTPS, SOAP/HTTP, SMTP, FTP, RMI/IIOP, etc).
Whenever I draw a component diagram, it typically only shows the components that reside
within a single container.
Структура
Пакеты, пространства имен, и тд.
Взаимодействие
• The purpose of the interaction (e.g. “uses”, “persists trade data through”, etc)
• Communication style (e.g. synchronous, asynchronous, batched, two-phase commit, etc)