-
Notifications
You must be signed in to change notification settings - Fork 4
Full Stack
Есть проблемы, реальность которых подтверждена практикой:
(это не вообще а конкретно у нас и нашей практикой)
- монолитные приложения на Node.js долго рестартуют, особенно при использовании in-memory store
- компоненты падают, но редко. Эти падения не должны приводить к нарушениям в работе приложения, в традициях OTP
- наколенный сторадж постоянно повреждается - из-за крешей пишущего приложения, резета хостингом, окончания места
- обновления системных библиотек непредсказуемо разрушают продакшен. Нужно обеспечить чтобы продакшен был точной копией стейджинга.
- откат на прошлые версии затруднён. Теги в сорс-контроле работают плохо. Архив всех прошлых имиджей лучше т.к. не требует дисциплины
- сбор и хранение исходных данных должны быть независимы от производных данных. Производные данные должны считаться кешом, а инвалидация и перезаполнение этого кеша - штатной процедурой, а не исключительным восстановлением после сбоя.
- необходим трекинг и аналитика редких событий - как то переполнение памяти или странные сообщения в логе. Группировка похожих стектрейсов и отслеживание частоты.
- утечку памяти с периодическим перезапуском следует считать нормой. Нужны средства ограничения и мониторинга.
- сложные UI требуют особого подхода к MVC
- большое количество данных требует особого подхода к синхронизации
- персистент-базы (сохраняющие всю историю) и социальная авторизация (отсутствие собственной базы паролей) хорошо себя зарекомендовали
Невыполнимую задачу нельзя заткнуть докупив железа. Поскольку она изначально нереализуема ни на каком железе и её приходится урезать до возможностей железа.
Самый простой пример невыполнимой задачи - компьютерная игра. Как только железо ускоряется - усложняется и игра.
Основное требование ACID (у взрослых дядь, а не хипсторов, решено с 1970х):
- A - не должно быть повреждений "половина записалась". Если сбой в процессе записи - гарантированно ничего не записывается.
- С - нельзя записать противоречащие друг другу данные
- I - не должно быть повреждений ACD из-за того что 2 клиента что-то делают параллельно
- D - один раз записанное не должно повреждаться
Такие базы есть: cписок в ответах на SO
https://www.xaprb.com/blog/2014/06/08/time-series-database-requirements/ - список требований к базе временных рядов. У нас всё наоборот - повышенные требования к целостности, больше чтений и в IO мы не упремся от слова никогда (если правильно готовить SSD а не по-рабочекрестьянски без учета страничной организации и внутреннего паралеллизма).
из аналитикс сервисов есть:
- Машинное обучение - ощные облачные средства прогнозируемой аналитики для диагностического обслуживания
- Stream Analytics - Обработка потоковых данных от миллионов устройств Интернета вещей в режиме реального времени
- HDInsight - Подготовка облачных кластеров Hadoop, Spark, R Server, HBase и Storm. Это единственное полностью управляемое облачное предложение Hadoop, предоставляющее оптимизированные аналитические кластеры с открытым кодом для Spark, Hive, MapReduce, HBase, Storm, Kafka и R Server
- Cognitive Services - Контекстуальное взаимодействие с помощью возможностей интеллектуального интерфейса API
- Azure Bot - Интеллектуальная серверно-независимая служба для программ-роботов, масштабируемая по требованию
- Data lake analytics - Распределенные службы аналитики, которые упрощают работу с большими данными
- Power BI Embedded - Узнайте, как встраивать в свои приложения впечатляющие, полностью интерактивные визуализации данных
Там 100500 докладов, вот по пункту "сложные UI требуют особого подхода к MVC". Это обзор всего что было налеплено прогрессивного с момента создания фейсбуком Реакта в 2013 году:
https://dl.dropboxusercontent.com/u/561580/conferences/2016.12%20Clojure%20eXchange.pdf