Pull to refresh
1
0
Send message

Построение микросервисной архитектуры на Golang и gRPC, часть 2 (docker)

Reading time15 min
Views14K

Пришло время заняться контейнерами


Прежде всего, мы используем новейший образ Linux Alpine. Linux Alpine — это легкий дистрибутив Linux, разработанный и оптимизированный для запуска веб-приложений в Docker. Другими словами, Linux Alpine обладает достаточным количеством зависимостей и функциональных возможностей для выполнения большинства приложений. Это означает, что размер образа составляет около 8 МБ!

По сравнению с, скажем… виртуальной машиной Ubuntu объемом около 1 ГБ, вот почему образы Docker стали более естественным образом подходить для микросервисов и облачных вычислений.

Итак, теперь я надеюсь, что вы видите ценность в контейнеризации, и мы можем начать «Dockerising» нашего первого сервиса. Давайте создадим Dockerfile $ touch consignment-service/Dockerfile.


Читать дальше →

Docker-compose. Как дождаться готовности контейнера

Reading time7 min
Views78K

Введение


Существует много статей про запуск контейнеров и написание docker-compose.yml. Но для меня долгое время оставался не ясным вопрос, как правильно поступить, если какой-то контейнер не должен запускаться до тех пор, пока другой контейнер не будет готов обрабатывать его запросы или не выполнит какой-то объём работ.
Читать дальше →

Удалённая разработка в VS Code: ваша жизнь никогда не будет прежней

Reading time3 min
Views70K

У нас в TestMace Visual Studio Code является одним из самых популярных инструментов. И тем более отрадно, что он развивается семимильными шагами. Вашему вниманию предлагается перевод статьи об еще одной вкусной фиче, которая доступна пока только в VS Code Insiders.


Согласен, немного переборщил с заголовком, просто меня переполняют эмоции. Я решил поделиться своими первыми впечатлениями от удалённой разработки в VS Code, на момент написания статьи доступной в VS Code Insiders.

Читать дальше →

Google Camera — хайп или замена зеркалки?

Reading time4 min
Views123K

Все мы знаем про популярное приложение Google Camera (дальше GCam). О нем говорят везде: 4PDA, XDA, на всех официальных форумах о телефонах. Практически каждый владелец устройства пытается найти на свой девайс GCam, потому что их телефоны уже не имеют поддержку производителя или качество фото/видео страдает из-за небрежного отношения разработчиков (или нехватки ресурсов) к стоковой камере.


В статье будет много фото сделанных на GCam.


image

Читать дальше →

Знакомство с Helm 3

Reading time10 min
Views25K


Прим. перев.: 16 мая этого года — значимая веха в развитии менеджера пакетов для Kubernetes — Helm. В этот день был представлен первый альфа-релиз будущей крупной версии проекта — 3.0. Её выход принесёт в Helm существенные и долгожданные изменения, на которые многие в Kubernetes-сообществе возлагают большие надежды. К таковым относимся и мы сами, поскольку активно используем Helm для деплоя приложений: мы интегрировали его в свой инструмент для реализации CI/CD werf и от случая к случая вносим посильный вклад в развитие upstream. Этот перевод объединяет 7 заметок из официального блога Helm, что приурочены к первому альфа-релизу Helm 3 и рассказывают об истории проекта и основных фичах Helm 3. Их автор — Matt «bacongobbler» Fisher, сотрудник Microsoft и один из ключевых мейнтейнеров Helm.
Читать дальше →

Живут ли базы данных в Kubernetes?

Reading time7 min
Views21K


Как-то так исторически сложилось, что IT-индустрия по любому поводу разбивается на два условных лагеря: которые «за» и которые «против». Причем предмет споров может быть абсолютно произвольным. Какая ОС лучше: Win или Linux? На смартфоне Android или iOS? Хранить все в облаках или заливать на холодные RAID-хранилища и класть винты в сейф? Имеют ли PHP-шники право называться программистами? Эти споры носят, временами, исключительно экзистенциальный характер и не имеют под собой никакой прочей, кроме спортивного интереса, базы.

Так уж получилось, что с появлением контейнеров и всей этой любимой нами кухни с докером и условным k8s начались и споры «за» и «против» использования новых возможностей в различных сферах бэкэнда. (Заранее оговоримся, что хотя чаще всего в данном рассуждении в качестве оркестратора будет указываться Kubernetes, принципиального значения выбор именно этого инструмента не имеет. Вместо него можно подставить любой другой, какой вам кажется наиболее удобным и привычным.)

И, казалось бы, был бы это простой спор о двух сторонах одной медали. Такой же бессмысленный и беспощадный, как извечное противостояние Win vs Linux, в котором адекватные люди вполне себе существуют где-то посередине. Вот только в случае контейнеризации не все так просто. Обычно в таких спорах не бывает правой стороны, но в случае «применять» или «не применять» контейнеры для хранения БД все становится с ног на голову. Потому что в определённом смысле правы и сторонники и противники подобного подхода.
Читать дальше →

Используем все возможности индексов в PostgreSQL

Reading time8 min
Views29K

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

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

Примечание: показанные ниже запросы работают на не модифицированном образце базы данных pagila.
Читать дальше →

ИИ научился создавать видео с одного кадра. Старые картины теперь можно сделать живыми

Reading time2 min
Views53K


Технология из Гарри Поттера дошла до наших дней. Теперь для создания полноценного видео человека достаточно одной его картинки или фотографии. Исследователи машинного обучения из «Сколково» и центра Samsung AI из Москвы опубликовали свою работу о создании такой системы, вместе с целым рядом видео знаменитостей и предметов искусства, получивших новую жизнь.

Читать дальше →

Криптография простым языком: разбираем симметричное и асимметричное шифрование на примере сюжета Звездных войн (Updated)

Reading time14 min
Views48K
Привет всем читателям Хабра! Не так давно решил разобраться с алгоритмами шифрования и принципами работы электронной подписи. Тема, я считаю, интересная и актуальная. В процессе изучения попробовал несколько библиотек, однако самой удобной с моей точки зрения является библиотека PyCrypto. У неё прекрасная документация, сопровождаемая примерами.

image

После прочтения материала вы усвоите следующие моменты:

  1. Что такое шифрование;
  2. Чем отличается симметричное шифрование от асимметричного;
  3. В каком случае эффективнее применять симметричное, а в каких асимметричное шифрование;
  4. Что такое хеш данных и для чего он используется в шифровании;

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

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

Поиск похожих изображений, разбор одного алгоритма

Reading time4 min
Views20K


Пришлось мне недавно решать задачку по оптимизации поиска дубликатов изображений.

Существующее решение работает на довольно известной библиотеке, написанной на Python, — Image Match, основанной на работе «AN IMAGE SIGNATURE FOR ANY KIND OF IMAGE» за авторством H. Chi Wong, Marshall Bern и David Goldberg.

По ряду причин было принято решение переписать всё на Kotlin, заодно отказавшись от хранения и поиска в ElasticSearch, который требует заметно больше ресурсов, как железных, так и человеческих на поддержку и администрирование, в пользу поиска в локальном in-memory кэше.

Для понимания того, как оно работает, пришлось с головой погружаться в «эталонный» код на Python, так как оригинальная работа порой не совсем очевидна, а в паре мест заставляет вспомнить мем «как нарисовать сову». Собственно, результатами этого изучения я и хочу поделиться, заодно рассказав про некоторые оптимизации, как по объёму данных, так и по скорости поиска. Может, кому пригодится.
Читать дальше →

Bitmap-индексы в Go: поиск на дикой скорости

Reading time15 min
Views33K


Вступительное слово


Я выступил с этим докладом на английском языке на конференции GopherCon Russia 2019 в Москве и на русском — на митапе в Нижнем Новгороде. Речь в нём идёт о bitmap-индексе — менее распространённом, чем B-tree, но не менее интересном. Делюсь записью выступления на конференции на английском и текстовой расшифровкой на русском.

Мы рассмотрим, как устроен bitmap-индекс, когда он лучше, когда — хуже других индексов и в каких случаях он значительно быстрее них; увидим, в каких популярных СУБД уже есть bitmap-индексы; попробуем написать свой на Go. А «на десерт» мы воспользуемся готовыми библиотеками, чтобы создать свою супербыструю специализированную базу данных.

Очень надеюсь, что мои труды окажутся для вас полезными и интересными. Поехали!

Docker: невредные советы

Reading time6 min
Views36K

В комментариях к моей статье Docker: вредные советы было много просьб объяснить, чем так ужасен описанный в ней Dockerfile.


Краткое содержание предыдущей серии: два разработчика в жестком дедлайне составляют Dockerfile. В процессе к ним заходит Ops Игорь Иванович. Итоговый Dockerfile плох настолько, что ИИ оказывается на грани инфаркта.



Сейчас разберемся, что не так с этим Dockerfile.


Итак, прошла неделя.

Читать дальше →

Создание многопользовательской веб-игры в жанре .io

Reading time23 min
Views35K
image

Вышедшая в 2015 году Agar.io стала прародителем нового жанра игр .io, популярность которого с тех пор сильно возросла. Рост популярности игр .io я испытал на себе: за последние три года я создал и продал две игры этого жанра..

На случай, если вы никогда раньше не слышали о таких играх: это бесплатные многопользовательские веб-игры, в которых легко участвовать (не требуется учётная запись). Обычно они сталкивают на одной арене множество противоборствующих игроков. Другие знаменитые игры жанра .io: Slither.io и Diep.io.

В этом посте мы будем разбираться, как с нуля создать игру .io. Для этого достаточно будет только знания Javascript: вам нужно понимать такие вещи, как синтаксис ES6, ключевое слово this и Promises. Даже если вы знаете Javascript не в совершенстве, то всё равно сможете разобраться в большей части поста.
Читать дальше →

Руководство по Docker Compose для начинающих

Reading time9 min
Views1M
Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.

image
Читать дальше →

Резервное копирование, часть 1: Назначение, обзор методов и технологий

Reading time12 min
Views25K
Backup? I don't need backup!!

Зачем же нужно делать резервные копии? Ведь оборудование весьма и весьма надежное, к тому же есть «облака», которые по надежности лучше физических серверов: при правильной настройке «облачный» сервер запросто переживет отказ инфраструктурного физического сервера, а с точки зрения пользователей сервисов, будет небольшой, еле заметный скачок времени обслуживания. К тому же дублирование информации зачастую требует оплатить «лишнее» процессорное время, дисковую нагрузку, трафик сети.
Читать дальше →

Управление Docker контейнерами в Go

Reading time4 min
Views11K

Документация!


Когда вы решите написать, свой велосипед по ловле хуков из docker hub или из registry для автоматического обновления/запуска контейнеров на сервере, вам может пригодиться Docker Cli, который поможет управлять демоном Docker в вашей системе.
image

Читать дальше →

Динамическое изменение схемы JSON в Go с помощью gob

Reading time5 min
Views5.6K

Значимо изменить маршализацию структуры в json можно только через метод MarshalJSON(), написав там полную реализацию маршализации. Как именно? На это документация Go ни ответов, ни рекомендаций не даёт, предоставляя, так сказать, полную свободу. А как воспользоваться этой свободой так, чтобы не нагородить кучу костылей, перенеся всю логику в MarshalJSON(), и потом не перепиливать эту бедную постоянно разрастающуюся функцию при очередных кастомизациях json?


Решение на самом деле простое:


  1. Будь честен (честна).

(Второго пункта не будет, первого хватит.)

Читать дальше →

Шпаргалки по безопасности: Docker

Reading time7 min
Views46K


Docker контейнеры — самая популярная технология для контейнеризации. Изначально она использовалась в основном для dev и test окружений, со временем перешла и в production. Docker контейнеры начали плодиться в production среде, как грибы после дождя, однако мало из тех, кто использует данную технологию, задумывался о том, как же безопасно публиковать Docker контейнеры.

Основываясь на OWASP, мы подготовили список правил, выполнение которых позволит значительно обезопасить ваше окружение, построенное на Docker контейнерах.
Читать дальше →

Пользователь в Docker

Reading time3 min
Views76K

Андрей Копылов, наш технический директор, любит, активно использует и пропагандирует Docker. В новой статье он рассказывает, как создать пользователей в Docker. Правильная работа с ними, почему пользователей нельзя оставлять с root правами и, как решить задачу несовпадения идентификаторов в Dockerfile.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity