20 трендов в разработке ПО в 2020

  •  113 /
Spread the love

1. Все дороги ведут в облака

2019 год был выдающимся для поставщиков облачных услуг. Облака потребовались не только стартатап и технологичным компаниям, но и государственным учреждениям, медицие, банковской сфере, страховании. Тренд будет продолжаться и в 2020 году, компании разных размеров будут переходить или имеют план перехода в облака в следующем году. Gartner прогнозирует рост выручки облачных услуг на 17% в 2020 году. Если вы компания, которая стремиться стать ведущей на рынке, то возможно вам следует переосмыслить свою стратегию по использованию облачных вычислений. Если вы разработчик ПО, то 2020 год будет удачным временем для знакомства с облачными технологиями Amazon, Microsoft, Google.

2. Amazon AWS лидер, но другие поставщики будут наращивать свои позиции.

2019 год был годом Amazon, 2020 останется таким же.

Microsoft будет ориентироваться на enterprise рынок, в 2019 году она заключила большую сделку с Пентагоном по проекту JEDI, эта сделка на 10 млрд. $ ускорит популяризацию Azure технологий.

Google продвигает Cloud Native Computation Foundation и будет облегчать переход в облака для небольших компаний и те, который уже сотрудничают с AWS.

В 2020 году будут появляться множество Multi-Cloud стартапов, конкуренция позволит снизнить цены и привлеч больше инноваций в эту сферу.

3. Контейнеризация: Кубернетес будет лучше

Прошлая битва между Kubernetes, Docker Swarm и Mesos окончена. Победил Kubernetes.

Облако — это распределенные системы, а Kubernetes — это операционные системы (распределенный Linux).

Популярность Kubernetes растет экспоненциально, это позволит ему оставаться на сильных позициях и в 2020 году. В то время, как Docker был продан компании Mirantis. Несколько лет назад мир вертелся вокруг Docker, теперь это Kubernetes. Docker попытался монетизировать свои начинания с запозданием и отрасль уже перешла к конкурентам. Это еще раз показывает, что технологии — это все.

4. Архитектура ПО. Микросервисы будут мейнстримом

В мире Cloud плафторм будут доминировать микросервисы. Для Cloud Native это идеальная архитектура для быстрой разработки.

5. Популярность Python будет и далее расти

Из-за Machine Learning, Data Analytics, Data Processing, Web Development, Enterprise Software Development, а также фото черных дыр, Python будет использоваться практически везде.

В 2020 году Python станет 3-м по популярности языком после Java и C.

Стоит отметить, что за 2019 год Python стал в 2 раза более популярным (с 5% до 10%).

Рост Python будет продолжаться и в 2020 году посредством замещения языков C и Java. Другой вездесущий язык программирования JavaScript сталкивается с тенденцией к снижению (JavaScript устал?). Почему Python так популярен? Он снизил барьеры для входа в программирование, имеет отличное сообщество и пользуется популярностью у исследователей данных и разработчиков нового поколения.

6. Программирование (Enterprise): Java и JVM будут оставаться на своих местах.

Согласно TIOBE индексу, JAVA самый популярный язык на планете и останется таким и в 2020 году. JVM это один из лучших продуктов на сегодня. Многие языки, такие как Kotlin, Scala, Clojure, Groovy используют JVM. Напомним, что в 2018 году, компания Oracle изменила лицензию на использование Java, Kotlin, Scala и JVM языков на платную.

7. Java Enterprise: Spring уже здесь

Когда-то в разработке корпоративного программного обеспечения была огромная конкуренция между Spring Framework и Java Enterprise Edition (Java EE). Но Oracle уступил конкурентам, будучи неактивным в Java EE. Это привело к формированию инициативы «Микропрофиль» и в конечном итоге к созданию Jakarta EE, где Oracle открыла исходный код Java EE.

В то время как вся политика и движения происходили вокруг Java EE, Spring Framework выиграл войну JVM Enterprise Framework с очень активной разработкой и быстрым реагированием на меняющуюся среду.

Два очень привлекательных проекта находятся на стадии разработки, чтобы сделать Java меньше, быстрее и хорошим выбором для вычислений без сервера. Эти фреймворки называются Micronaut и Quarkus. Оба нацелены на использование GraalVM и будут драйвить Java в 2020 году.

8. Программирование: Rust, Swift, Kotlin, TypeScript сделают прорыв

В 2000-х годах произошел застой в языковом ландшафте. Большинство людей думали, что нет необходимости в новом языке программирования, так как Java, C, C ++, JavaScript и Python удовлетворяли все потребности. Google открыл двери для новых языков программирования, создав Go. В последнее десятилетие появилось много интересных языков программирования, таких как Rust, Swift, Kotlin, TypeScript. Одна из причин этого развития заключается в том, что существующие языки программирования часто не способны использовать преимущества последних изменений в аппаратном обеспечении (например, многоядерность, быстрая сеть, облака). Другим фактором является то, что современные языки особенно ориентированы на эргономику разработчика, то есть более быструю и легкую разработку. В опросе разработчиков Stackoverflow большинство современных языков занимают лидирующие позиции (Rust занимает первое место 4 года подряд):

Недавно Microsoft объявила, что они активно изучают программирование на Rust для разработки безопасного программного обеспечения. В то же время Amazon задекларировала спонсорскую поддержку.

Язык программирования Kotlin также становится основным конкурентом Java в мире JVM, когда Google объявляет об официальной поддержке Kotlin в Android.

Angular поддерживает TypeScript в качестве основного языка программирования вместо использования стандартного JavaScript. Другие JavaScript-фреймворки, например React и Vue также начали предлагать больше поддержки TypeScript.

Тенденция сохранится в 2020 году, многие другие компании-гиганты, которые, вероятно, будут более пристально наблюдать за языками программирования нового поколения, такими как Rust, Swift, TypeScript, Kotlin, выступят и открыто заявят о своей поддержке.

9. Web: JavaScript будет продолжать доминировать

Когда-то JavaScript не был достаточно сильным языком программирования, и Frontend разрабатывался в основном с использованием Backend, такого как JSF, Ruby on Rails, Django, Laravel и рендеринга с сервера. Ситуация навсегда изменилась после того, как AngularJS вышел на сцену в 2014 году. С тех пор появилось много других веб-фреймворков JavaScript (Angular 2+, React, Vue.js, Meteor.js), и JavaScript теперь является основной средой веб-разработки. Благодаря многим инновациям в JavaScript-фреймворках и появлению микросервисной архитектуры, фреймворки JavaScript будут еще больше доминировать в разработке Frontend в 2020 году.

10. JavaScript Web Framework: React Rocks

Хотя он появился после AngularJS, React оказал наибольшее влияние на веб-разработку за последнее десятилетие и спас Facebook в борьбе с Google+. React привнес некоторые свежие и инновационные идеи в разработку Frontend, например. Event Sourcing, Virtual Dom, одностороннее связывание данных, разработка на основе компонентов и многое другое. Это повлияло на сообщество так серьезно, что Google отказался от AngularJS и полностью его переписал в Angular2+, позаимствовав идеи от React. React на сегодняшний день является наиболее доминирующей и стабильной веб-платформой JavaScript, как показано ниже из статистики загрузки NPM:

Недавно Facebook анонсировал проект React-Fiber, это полностью переписанный React движок.
Кроме того, в 2020 году React должен стать веб-платформой для новых проектов. Как насчет других Frontend Web Frameworks, например Angular (Angular2 +) и Vue? Angular также является надежной средой веб-разработки, особенно подходящей для предприятий. Я уверен, что Google будет активно инвестировать в Angular в ближайшие годы. Vue — еще один очень популярный веб-фреймворк, поддерживаемый сообществом и несколькими гигантскими китайскими корпорациями. Если вы уже используете Angular или Vue, нет необходимости переходить на React в 2020 году.

11. Разработка приложений: Native для Enterprises

В разработке мобильных приложений шумиха вокруг гибридных или кроссплатформенная приложений немного утихла. Разработка кроссплатформенных приложений обеспечивает более высокую скорость, поскольку вам нужна только одна команда вместо двух. Но Native приложения обеспечивают лучший пользовательский опыт и лучшую производительность. Кроме того, при разработке кроссплатформенных приложений его всегда нужно настраивать, чтобы иметь расширенные функции. Для Enterprises, Native App Development по-прежнему является предпочтительным решением, и эта тенденция сохранится в 2020 году.

Хотя Facebook пытается улучшить React Native, а Google активно продвигает свою собственную Flutter платформу разработки приложений, они в основном подходят для Prototype, POC, MVP или функциональных приложений, в то время как Native App Development продолжит свое господство в 2020 году.

Интересным фактом среди разработчиков Native App является то, что Google продвигает Kotlin, а Apple продвигает Swift в качестве основных языков программирования. Google недавно подтвердил свою поддержку Kotlin, что является хорошей новостью для пользователей этого языка.

12. Разработка  кроссплатформенных приложений: React Native

Существует много сценариев, когда гибридное / кроссплатформенное приложение является рациональным выбором. В этой области есть много вариантов: уже существующий Xamarin, Ionic и более новый React Native, Flutter. Facebook создал React Native на основе очень успешного и зрелого веб-фреймворка React. Как и его веб-аналог, React Native также является доминирующей средой в разработке гибридных / кроссплатформенных приложений.

React Native и React используют одну и ту же базу, они предлагают многократное использование кода и предлагают опцию «Писать один раз, запускать везде». Еще одно дополнительное преимущество использования React Native (или другой платформы Facebook) заключается в том, что Facebook использует React Native для разработки собственного мобильного приложения. Google запаздывает в этой области, но набрал значительную популярность в прошлом году благодаря своей собственной кроссплатформенной платформе Native App Flutter. Flutter предлагает лучшую производительность, но ему нужен еще один еще не распространенный язык программирования Dart. Учитывая все изменения, происходящие в экосистеме, React Native продолжит доминировать в этой области и в 2020 году.

13. API: REST

REST похож на тяжелую гориллу в API технологиях. Это, де-факто, наиболее широко используемый метод в коммуникации между службами на основе API. Есть также другие способы. Как вы уже догадались, это gRPC от Google и GraphQL от Facebook.

Оба они представляют интересную технологию, но предлагают разные возможности. Google разработал gRPC как реинкарнацию техник удаленных вызовов процедур (например, SOAP), но на стеройдах. Он использует Protobuf вместо JSON в качестве формата обмена сообщениями. С другой стороны, Facebook разработал GraphQL в качестве слоя агрегации, чтобы избежать частых вызовов REST. Как gRPC, так и GraphQL добились успеха в своих нишах. В 2020 году REST также станет наиболее доминирующим API, тогда как GraphQL и gRPC будут использоваться в качестве дополнительного средства.

14. Искусственный интеллект: Tensorflow 2.0 будет доминировать

В области Deep Learning / Neural Network основными игроками являются Google и Facebook. Google предоставил нам TensorFlow, основанный на популярной платформе глубокого обучения Theano. Она быстро стала основной библиотекой для глубокого обучения нейронной сети. Google даже представил специально разработанный графический процессор (TPU) для ускорения вычислений TensorFlow.

Facebook не сильно отстает в области глубокого обучения, поскольку у них, вероятно, самая большая коллекция изображений и видео. Facebook выпустил библиотеку глубокого обучения PyTorch, основанную на другой популярной библиотеке глубокого обучения Torch. Существует небольшая разница в том, как работает обе платформы. TensorFlow использует Static Graph для своих вычислений, тогда как PyTorch использует Dynamic Graph для своих вычислений. Преимущество использования динамического графа состоит в том, что он может исправляться на лету. Кроме того, PyTorch более дружественен к Python, который является основным языком программирования в Data Science.

По мере того, как PyTorch приобретал все большую популярность, Google выпустил TensorFlow 2.0 в октябре 2019 года, который использует динамический график и более дружественен к Python.

В 2020 году TensorFlow 2 и PyTorch будут сражаться за свои ниши. Учитывая более широкое сообщество TensorFlow, можно предположить, что TensorFlow 2 будет доминирующей библиотекой для глубокого обучения.

15. База данных: SQL великий, но Distributed SQL будет Святым Граалем

Во времена хайпа NoSQL многие смеялись над SQL и указывали на его ограничения. Многие посты объясняли, как NoSQL намного лучше и заменит SQL. Но как только хайп закончился, люди вскоре поняли, что мир не может жить без баз данных SQL. Вот рейтинг самых популярных баз данных:

Как видно из приведенного выше графика, базы данных SQL занимают первые 4 места. Причина доминирования SQL заключается в том, что он имплементирует ACID, которые являются наиболее важными требованиями для бизнес-приложений. Базы данных NoSQL предлагают горизонтальное масштабирование, но с ценой нарушения гарантии ACID.

Компании, работающие в веб-масштабе, ищут «основную базу данных», то есть базу данных, которая будет предоставлять гарантию ACID, такую ​​как базы данных SQL, и будет предлагать горизонтальное масштабирование, как базы данных NoSQL. На данный момент два решения частично соответствуют требованиям «Основной базы данных»: Amazon Aurora и Google Spanner. Aurora предлагает практически все функции SQL, но не горизонтальное масштабирование записи, тогда как Spanner предлагает горизонтальное масштабирование записи, но не поддерживает многие функции SQL.

Мы надеемся, что в 2020 году две базы данных станут ближе, или кто-то другой предложит «Распределенный SQL». Если это произойдет, он, вероятно, получит туринский приз.

16. Data Lake: MinIO станет более известным

Как обсуждалось в предыдущем разделе, современная платформа данных является сложной. Компании обычно имеют базы данных OLTP (SQL) для поддержки транзакций ACID и базы данных OLAP (NoSQL) для аналитических целей. Кроме того, предприятия имеют другие виды хранения данных, например, для поиска (Solr, гибкий поиск) или вычислений (Apache Spark). Компании строят свою платформу данных на основе озера данных, то есть данные копируются из баз данных OLTP в озеро данных. Все другие типы приложений данных (например, OLAP, поиск) используют озеро данных в качестве своего основного источника.

Распределенная файловая система Hadoop (HDFS) была де-факто озером данных до тех пор, пока Amazon не выпустила Object Storage S3. Масштабируемый и дешевый, S3 вскоре стал де-факто Data Lake во многих компаниях. Единственная проблема заключается в том, что использование S3 тесно связывает платформу данных с облаком Amazon AWS. Хотя в Microsoft Azure есть хранилище BLOB-объектов, а в Google — аналогичное хранилище объектов, они не совместимы с AWS S3.

Новый Open Source, S3-совместимый Object Storage MinIO может быть спасением для многих компаний. С поддержкой уровня Enterprise и созданной для среды Cloud-Native, MinIO предлагает Cloud Neutral Data Lake.

Недавно Microsoft объявила о выпуске MinIO в Azure Marketplace под лозунгом: «Предоставление Amazon S3 API-совместимого доступа к данным для служб хранилища BLOB-объектов Azure». Если Google GCP и другие также предлагают MinIO, то это может стать большим шагом вперед для поддержки Multi-Cloud.

17. Big Data вычисления: Spark продолжит сверкать

В наши дни предприятиям обычно требуется выполнить вычисления для своего крупномасштабного набора данных, для чего требуется распределенное пакетное задание. Hadoop Map-Reduce была первой вычислительной платформой Distributed Batch. Недавно Apache Spark занял место Hadoop как короля пакетной обработки. Как Apache Spark может дать лучшую производительность, чем Hadoop?

Spark специально нацелен на ограничения Hadoop Map-Reduce, то есть обрабатывает все в памяти вместо сохранения данных в хранилище после каждой дорогостоящей операции. Хотя Spark использует процессорную и JVM машины, требующую много памяти, для пакетной обработки, он все равно будет доминировать в 2020 году и далее. Нам бы хотелось, чтобы кто-то разработал более эффективную среду пакетной обработки данных с использованием Rust, которая могла бы заменить Spark и сэкономить огромные счета компаний.

18. Поток больших данных: взгляд в будущее

Несколько лет назад обработка потоков в реальном времени была невозможна. Обычно использовалась микропакетная среда, такая как Spark Streaming, которая обеспечивала «почти» обработку потока в реальном времени. Однако Apache Flink изменил ландшафт, предложив возможность обработки потоков данных в реальном времени.

До 2019 года Apache Flink не мог набрать достаточную силу, поскольку не мог конкурировать со Spark. Все изменилось после того, как китайский технический гигант Alibaba купил Data Artisan (компанию, которая стоит за Apache Flink) в январе 2019 года.

Flink должен стать выбором номер один, если компания хочет обрабатывать потоки данных в реальном времени в 2020 году и в последующий период. Хотя Flink имеет те же недостатки как и Spark, он использует ресурсоемкую и тяжелую JVM.

19. ByteCode: WebAssembly увидит массовое внедрение

Чтобы узнать о WebAssembly, можно почитать интервью Брэндона Эйча, создателя JavaScript. Современный JavaScript (после es5) — отличный язык программирования. Но, как и любой другой язык, у него есть ограничения. Самое большое ограничение JavaScript заключается в том, что он медленный, поскольку движок JavaScript должен читать, анализировать и обрабатывать текстовое «абстрактное синтаксическое дерево». Другая проблема с JavaScript состоит в том, что он является однопоточным и не может использовать преимущества современного оборудования (например, многоядерный, графический процессор). В результате многие приложения, требующие большого объема вычислений (например, игры, трехмерная графика), не могут работать в браузере.

Несколько компаний (во главе с Mozilla) разработали WebAssembly, низкоуровневый формат байт-кода для браузера, для запуска любого поддерживаемого языка программирования в Web. Выпущен MVP WebAssembly, который поддерживает язык программирования Metal (например, C ++, Rust).

WebAssembly позволила приложениям, требующим большого объема вычислений, таким как иры и Autocad, работать в браузере. Задача WebAssembly еще масштабней и она работает и вне браузера. WebAssembly также предлагает безопасность и sandbox благодаря своей веб-поддержке. Это также означает, что WebAssembly может использоваться в следующих сценариях «за пределами браузера»:

  • Гибридные нативные приложения на мобильных устройствах.
  • Безсерверные вычисления без проблем холодного запуска (Облако)
  • Вычисление ненадежного кода на стороне сервера (CDN)

2020 год может стать прорывным для WebAssembly, и многие гигантские корпорации (включая облачных поставщиков) и сообщество примут его.
20. Кодирование: Low-Code / No-Code получит импульс

Быстрая революция в области цифровизации и индустрии 4.0 означает, что существует огромный разрыв в спросе и предложении для разработчиков программного обеспечения. В результате многие люди или компании не могут реализовать свои идеи из-за нехватки разработчиков. Чтобы снизить барьер для входа в разработку программного обеспечения, делается попытка сделать разработку программного обеспечения без кода или с минимальным кодом (с низким порогом вхождения). Это усилие известно как LCNC (код без кода) и достигло определенного успеха в 2019 году:

Цель этого движения заключается в том, что любой может разрабатывать программное обеспечение, если у него есть отличная идея без опыта программирования.

Хотя можно скептически относиться к использованию каркасов LCNC в производстве, но они могут заложить основу для других. Такие компании, как Amazon, Google могут создать надежный продукт на этой основе (так же, как AWS Lambda процветает на основе Google App Engine).

Стоит взглянуть на движение LCNC, которое получит большее распространение в 2020 году.

Выводы

Современная разработка программного обеспечения довольно обширна, сложна и разнообразна. Наш список прогнозов ни в коем случае не является всеобъемлющим. Мы  только пытались предсказать тенденции в областях, в которых у нас есть опыт. Кроме того, выбор Tech Stack всегда зависит от способа использования. Если вы хотите выбрать технический стек в определенной области, то, пожалуйста, проведите собственный анализ и не принимайте буквально упомянутые пункты.

Наша цель состояла в том, чтобы дать краткий обзор тенденций развития программного обеспечения в 2020 году. Надеемся, у вас будет успешный и веселый 2020 год.

По материалам 20 Predictions about Software Development trends in 2020 Md Kamaruzzaman

Добавить комментарий