Workplace является запатентованным продуктом Supahands. Наши менеджеры по бизнес-операциям (BOM) используют платформу для управления нашими проектами и SupaAgents (управляемая рабочая сила Supahands).

Одним из основных преимуществ Workplace являются метки - функция, которая позволяет спецификациям сопоставлять SupaAgents проектам в зависимости от их навыков и квалификации.

Этикетки помогают описать навыки SupaAgent, а наши спецификации позволяют идентифицировать SupaAgent с соответствующими навыками, которые требуются от них для присоединения к проекту.

Ярлыки отображают навыки агента SupaAgent и требования проекта.

Например, для Project 5UP4 требуются агенты SupaAgents с навыками аннотации, поэтому спецификации могут изменять настройки проекта, агенты SupaAgents без тега label для своей учетной записи не смогут присоединиться к проекту.

Проблема, которую мы пытались решить…

Мы испытали неожиданный рост в сентябре, когда у нас на рабочем месте появилось в три раза больше агентов SupaAgents. Платформа должна была загружать информацию каждого агента SupaAgent, создавая нагрузку на систему.

Помимо проблем с загрузкой, сервер не отвечал из-за большого количества данных, с которыми ему приходилось обрабатывать. Сначала мы попытались решить проблему, увеличив количество процессоров, на которых работает наш микросервис, но в конце концов пришли к выводу, что это дорого и неэффективно.

Мы знали, что нам нужно действовать следующим образом ⁠ - переписать микросервис Workplace.

Предыдущий микросервис был построен с использованием Java (Spring-boot framework) и GraphQL (neo4j), которые не подходили для быстрого масштабирования. Архитектура программного обеспечения была построена таким образом, чтобы позволить нам обрабатывать только то количество SupaAgents, которое у нас было в то время. Естественно, по мере того, как количество пользователей на платформе росло, Workplace начал ломаться.

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

Мы начали с поиска других языков программирования, сначала мы рассматривали Typescript, C # как решения. Однако, посмотрев на то, что используют другие крупные технологические компании, и сравнив доступные языки по критериям лаконичности, эффективности, производительности, мощности, надежности и поддержки сообщества, мы пришли к использованию Golang.

Почему именно Голанг?

Golang - это процедурный язык программирования, разработанный в 2007 году Робертом Гриземером, Робом Пайком и Кеном Томпсоном из Google. Он был запущен в 2009 году как язык программирования с открытым исходным кодом.

Golang соответствовал всем нашим критериям, а также обладал преимуществом открытого исходного кода, и сообщество, которое росло вокруг него, было яркой, гостеприимной и веселой группой.

Препятствия, возникающие при изучении Голанга

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

Естественно, что по пути мы столкнулись с препятствиями ...

1. Синтаксис

Синтаксис Golang является новым для человека, имеющего опыт работы с python, ruby ​​on rails и javascript, с точки зрения определения функций, управления массивами и определения классов.

2. Представление Голанга об объектно-ориентированном программировании

Голанг представляет концепции объектно-ориентированного программирования по-другому, поэтому у вас есть структуры вместо классов, и вы можете применять наследование, встраивая родительскую структуру в дочернюю структуру.

Например, чтобы определить класс в Javascript, C #, Typescript, вы можете использовать ключевое слово Class

Но на Голанге это другой класс, представленный структурой данных под названием struct

Другой пример - наследование, чтобы наследовать от класса в PHP, мы можем использовать ключевое слово extends

В C # мы можем использовать символ «:»

Но в Golang вы встраиваете структуру в другую, например:

В целом, Golang - надежный язык программирования, обеспечивающий простоту, эффективность, скорость и надежность с меньшим количеством кода для написания. Поскольку я только начал свой путь к Голангу, я получил поддержку большого сообщества, поэтому легко найти ответ на любые вопросы, которые могут у вас возникнуть. Вы можете потратить три-четыре часа на изучение концепций языка, а затем вы сможете легко начать создавать приложения, потому что Golang предоставляет большой пул пакетов и фреймворков, чтобы облегчить вашу жизнь, и, что самое хорошее, большая часть (если не все) пакеты имеют открытый исходный код, поэтому вы можете легко изменить их в соответствии со своими потребностями.