В 2014 году я написал сообщение в блоге под названием Тенденции веб-разработки на 2015 год и далее, в котором я предсказал, что в 2015 году Go станет новым языком программирования для разработки серверных веб-систем. В 2015 году Go постепенно становился языком для создания серверных систем RESTful и микросервисов. Я предсказываю, что 2016 год станет годом Go, и принятие Go достигнет своего пика с момента его первого выпуска в 2009 году.

В последние несколько лет в разработке программного обеспечения и архитектурах решений произошла смена парадигмы. Сдвиг парадигмы в сторону простоты, минимализма и прагматизма. Язык программирования Go представляет собой смену парадигмы простого и прагматичного языка со встроенной поддержкой параллелизма для написания высокопроизводительных и эффективных программных систем.

Реальный опыт усыновления го

В моей стране, Индии, я работал архитектором консалтинговых решений on Go и помогал нескольким организациям успешно внедрить Go в их команды разработчиков программного обеспечения. Позвольте мне поделиться своим опытом и наблюдениями по поводу принятия Go, а также опытом консультирования с различными командами.

Кривая обучения для усыновления чрезвычайно проста

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

Во-первых, позвольте мне поделиться опытом более свежей команды инженеров из десяти человек. Они были совершенно новичками в мире разработки реального программного обеспечения, имея лишь академическое образование в области C и C ++. Я провел двухнедельный тренинг для команды по языку Go и HTTP-программированию Go. После завершения обучения команда в течение двух месяцев работала над примерами веб-приложений на Go. По прошествии этого периода более свежая команда инженеров была очень твердой в HTTP-программировании Go для создания серверных систем RESTful, и с тех пор они без проблем работали над мобильными серверными системами на Go для продукта для мобильных устройств. Многие говорят, что Go не подходит для более свежих инженеров. Но, судя по моему практическому опыту, Go также хорош и для более свежих инженеров, если опытный Go-разработчик может правильно их направлять, давая рекомендации по концептуальным вещам Go.

Следующий опыт - это команда инженеров, состоящая из 2–3 лет опытных инженеров. До Go они занимались программированием на системном уровне с помощью C и C ++. С Go они планировали создать RESTful API в качестве серверной части для мобильных приложений. Здесь я провел недельное обучение языку Go, программированию HTTP и сохранению данных с базами данных NoSQL. После недельного обучения я предоставил руководство по архитектуре платформы на Go для создания RESTful API, и команда потратила на это неделю. Затем команда приступила к работе над реальной серверной системой для мобильных приложений, в которой команда работала по жесткому графику доставки, но они доставили приложение вовремя. Сейчас команда работает над другой мобильной бэкэнд-системой и работает как опытные разработчики.

Следующая история - об использовании Go опытной командой. Команда разрабатывала платформу мобильных платежей с использованием стека .Net на стороне сервера. Во время их разработки с использованием стека .Net я провел техническое обсуждение с соучредителем / архитектором компании и упомянул о Go. Он страстный технолог и ветеран .Net-разработчик, который попросил меня дать техническое руководство по Go, но не для использования каких-либо приложений, а просто для понимания стека. Затем я предоставил руководство по архитектуре платформы Go в течение одной недели для разработки высокомасштабируемых серверных систем с использованием Go. После недельного технического руководства по Go он был в восторге от Go, особенно из-за его простоты и прагматизма. Это увлечение Go привело к тому, что он принял Go для разработки платформы мобильных платежей. Его команда остановила разработку с использованием стека .Net, и с тех пор они работают над Go для своей платформы мобильных платежей следующего поколения. Несмотря на то, что Go для них является новой технологией, команда добилась большей продуктивности и производительности с Go по сравнению со стеком .Net.

Мы обсудили три разные истории о внедрении Go, где команды были из разных слоев общества и уровня опыта - от более свежих разработчиков до старших разработчиков и архитекторов. Во всех этих трех категориях процесс обучения был очень легким, а внедрение Go в реальных приложениях было очень гладким. Даже есть наблюдение, что Go не подходит для более свежих инженеров. Но по моему опыту, команды новичков также выбирали Go более быстрым способом и могли разрабатывать реальные приложения за короткое время обучения. Причина более быстрого внедрения Go очень проста - простота и прагматизм языка. Go - это язык, созданный как простой язык, но в то же время он обеспечивает все батареи для создания крупномасштабных приложений.

Пример использования - Aspros Instant Money (AIM)

Позвольте мне поделиться своим опытом консультирования по успешному внедрению Go для разработки инновационного продукта.

Aspros Instant Money (AIM) - это инновационная платформа для электронных переводов и платежей, разработанная компанией aspros Technologies, Доха, Катар. Приложение надежно защищено механизмом двойной аутентификации. Используя AIM, владелец учетной записи может отправлять или получать деньги за границу, отправлять деньги на банковские счета, отправлять мгновенные денежные средства в широкую сеть, снимать деньги в любом банкомате (без карты / без карты), оплачивать счета за коммунальные услуги, перевод средств, электронная коммерция Платежи, платежи AIM POS и т. Д.

Первоначально разработка приложения началась с технологического стека .Net с использованием инфраструктуры ASP.NET MVC в качестве бэкэнда. В середине разработки команда решила принять Go, а затем разработка возобновилась с Go для разработки масштабно масштабируемых серверных API. Платформа изначально разрабатывалась для рынка стран Ближнего Востока, особенно для Катара. Но теперь платформа нацелена на большее количество стран и рынков, включая Индию. Принятие Go действительно помогло процессу разработки продукта. Непосредственные результаты - высокая производительность, лучшая производительность и более быстрый выход на рынок. Мы использовали простую, но масштабируемую архитектуру для реализации на основе Go и не использовали какую-либо структуру Go для разработки серверных RESTful API. Мы широко использовали промежуточное ПО HTTP, которое обрабатывается стеком negroni. Принятие Go для этого продукта имело огромный успех во всех аспектах, и я настоятельно рекомендую Go для разработки серверных систем RESTful.

Перейти к тенденциям на 2016 год

Я предсказываю, что Go будет доминировать в 2016 году, и вы можете увидеть внедрение Go при разработке различных типов приложений - RESTful API и сетевых серверов, распределенных систем, инструментов инфраструктуры, Интернета вещей (IoT), разработки под Android, системы- уровень приложений и многое другое.

Позвольте мне резюмировать некоторые прогнозы Go на 2016 год.

Go будет доминировать в серверных системах и микросервисах

В эпоху мобильности серверные интерфейсы RESTful API становятся основой современных приложений, а наши серверные части просто становятся API. На данный момент мы используем различные технологии для разработки API-интерфейсов серверной части, включая Go, Node.js, Java, .Net, Ruby и Python. ИМХО, среди этих технологий Go идеально подходит для разработки серверных систем API. Go - это технология в эпоху архитектуры микросервисов. В 2015 году мы стали свидетелями того, как Go активно используется для разработки серверных API и микросервисов. Я прогнозирую, что пик будет достигнут в 2016 году.

Реинжиниринг серверных систем на будущее

Стеки Java и .Net были выбраны на предприятиях, а стеки Node.js, Ruby и Python были выбраны в стартапах и компаниях среднего размера, когда мы разрабатываем серверные приложения. Многие из существующих приложений на основе Java и .Net столкнулись с трудностями из-за своей сложности при масштабировании приложений. Стеки Ruby и Python отстой из-за проблем с производительностью, сложности обслуживания и масштабируемости. Все мы знаем, что языки динамического типа, такие как Ruby и Python, могут обеспечить высокую производительность и отличный стек для стартапов, когда они быстро создают свои продукты. Когда эти продукты станут успешными, а затем мы попытаемся масштабироваться для решения новых задач масштабируемости, преимущество использования языка динамического типа нанесет вам удар в спину проблемами производительности, а также проблемами ремонтопригодности и масштабируемости. Другое дело, что многие обычные веб-приложения были переработаны как серверные API.

Когда мы модернизируем приложения, Go постепенно становится выбором для новых приложений. Это широко применяется в Ruby On Rails. Интересно, что большинство первых последователей Go были разработчиками Ruby. В 2015 году я заметил, что многие приложения Ruby On Rails переходят на Go. Одним из примеров является Parse, мобильный сервер как услуга (MBaaS), который был разработан с помощью Ruby on Rails и был перенесен на Go. Ознакомьтесь с сообщением в блоге команды Parse на тему Как мы перевели наш API с Ruby на Go и спасли рассудок. Теперь платформа MBaaS на базе Go обеспечивает серверную часть для около 6 50 000 мобильных приложений.

Node.js используется во многих мобильных серверных системах, что обеспечивает высокую производительность по сравнению со многими традиционными технологиями. Node.js отлично подходит для создания мобильных серверных систем, которые я использовал для некоторых систем. Когда ваши HTTP-запросы имеют логику перехвата ресурсов на сервере или ваши серверные системы имеют распределенные вычислительные компоненты, Node.js просто терпит неудачу. Ознакомьтесь с интересным сообщением в блоге TJ Holowaychuk, который был видным лидером в области Node.js, о его решении покинуть Node.js и перейти на Go на Прощай, Node.js.

В 2016 году многие веб-системы будут переведены на Go с Ruby, Python, Node.js, Java и .Net.

Go будет продолжаться как язык для стека контейнеров

Десятилетия назад C и C ++ были языком по умолчанию для создания приложений системного уровня. В мире контейнеризации приложений это Go. Go - бесспорный лидер в мире контейнеров, и все основные инструменты в стеке контейнеров разрабатываются с помощью Go. Docker, Kubernets, rkt и большинство инструментов в стеке контейнеров были разработаны с помощью Go. Эта монополия сохранится и в 2016 году. Go также является отличным стеком технологий для DevOps и инструментов построения инфраструктуры.

Go - выбор языка стартапами

Стартапы первыми принимают новые технологии и инновации. Когда они запускают новый продукт, они выбирают наиболее перспективную технологию. Раньше это были Ruby и Node.js. В 2016 году вы можете увидеть, что Go будет широко использоваться в качестве языка программирования в стартапах, когда они начнут разрабатывать новые продукты. ИМХО, когда вы начинаете новую команду инженеров с нуля, Go - идеальный выбор языка из-за его простоты и прагматизма. Вы можете максимально быстро ускорить разработку вашего продукта благодаря минимальной потребности в обучении и высокой производительности. Go обеспечивает производительность языка динамического типа, сохраняя его как язык статического типа.

Перейти как выбор для нативных приложений для Android

Проект Go Mobile поддерживает нативную мобильную разработку как для Android, так и для iOS. Я предполагаю, что поддержка мобильных приложений Go будет улучшаться с каждой новой версией. В 2016 году Go будет использоваться для создания приложений Android на минимальном уровне, и в ближайшем будущем он получит широкое распространение.

На данный момент Go представляет собой совершенный стек технологий для создания масштабируемой серверной части для мобильных приложений. Go Mobile позволяет разработчикам Go создавать собственные мобильные приложения. Таким образом, разработчики Go могут создавать приложения как для серверных, так и для мобильных интерфейсов.

Go Принятие произойдет на предприятиях

Я твердо верю, что Go - это самая важная вещь в разработке корпоративных приложений после появления Cobol и Java. На предприятиях текущая проблема заключается в том, чтобы справиться с корпоративной мобильностью и предоставить корпоративные данные на мобильные устройства, открывая уровни RESTful и создавая распределенные вычислительные компоненты. Архитектура решений современных вычислений отличается от того, что два десятилетия назад зародилась Java. В настоящее время мы создаем системы в облачной инфраструктуре, контейнерах приложений и кластерах контейнеров, серверах с многоядерной инфраструктурой. Мы используем архитектуру микросервисов для построения более крупных систем поверх монолитной архитектуры. Go разработан для решения современных задач и ориентирован на создание масштабируемых систем на современных компьютерах и современных ИТ-инфраструктурах. Go - новый язык, который выбирают предприятия в эпоху облачных вычислений, контейнеризации приложений и параллельных приложений для современных многоядерных машин. Go станет следующей Java на предприятиях. В 2016 году на предприятиях будет происходить массовое внедрение Go, и в 2017 году это получит большой импульс.

Короче говоря, Go станет следующим крупным языком программирования, на котором в 2016 году будут доминировать приложения для разработки серверных API, реинжиниринга серверных систем, распределенных систем, инструментов для контейнеров приложений и инфраструктуры, а также DevOps. Go получит много внимания как язык для создания собственных приложений Android. И, наконец, Go приходит на предприятия как следующая Java и язык для решения современных задач. Добро пожаловать в мир простоты и прагматизма над академическими и интеллектуальными мыслями. 2016 станет годом го.

Вы можете подписаться на меня в твиттере по адресу @shijucv. Я провожу обучение и консультации по языку программирования Go (Golang) и архитектурам распределенных систем в Индии.