Микросервисная архитектура 🛠
Мы используем на сервере микросервисы. Это способ проектирования приложений из набора независимых сервисов. Подробнее про них можно почитать в переводе статьи Мартина Фаулера.
На данный момент у нас их поднятно 15 штук. Большинство написано на Flask, лэндинг на Django, асинхронные микросервисы на aiohttp. Они взаимодействуют друг с другом через REST API.
Это дает нам ряд преимуществ:
— Удобно поддерживать. У каждого сервиса своя конкретная функция. Управляем сложностью и не даем им разрастаться. Также проще распределять работу программистов между разными сервисами.
— Легко масштабироваться. Когда нам понадобится масштабирование, то просто запустим дополнительные демоны наших микросервисов.
— Лучше безопасность. Любой микросервис, например платежный, можно целиком отгородить от внешних запросов.
Мы столкнулись пока лишь с одним недостатком — тяжело разворачивать с нуля проект на компьюетере. Мы решили это внедрением Docker-контейнера, который разварачивает приложение целиком.
Что думаете про микросервисы? Рассказать про них поподробнее с примерами и схемами?
Управление релизами и версиями 💾
Продолжаю рассказывать, как устроена разработка у нас на проекте. Сегодня пост про то, как мы делаем релизы и меняем версии.
Релиз делается в конце каждого недельного спринта. Тогда же обновляется и версия проекта. Релизнутым считается код, добавленный в мастер и на продакшн.
Номер версии состоит из трех числе в формате vX.X.X
Версия проставляется в Git, туда же пишется ченжлог.
— Последнее число в версии меняется только при хотфиксах продакшна в течение недели vX.X.1.
— Число посередине меняется при каждом релизе, который не меняет ничего глобального vX.3.X.
— Первое число меняется только при изменениях архитектуры проекта, действующего API, добавлении новых сервисов v2.X.X.
Таким образом мы можем моментально откатиться до состояния любого спринта. Используете версии у себя? Возможно знаете лучший подход? Пишите @bluzir
Привет, мы вернулись из небольшого отпуска. Посты начинают выходить в привычном режиме. Спасибо, что ждали :^
Оставайтесь на связи. Скоро будут большие новости для тех, кто планирует научиться программировать.😼
Список программ на Python для совершенствования навыков программирования.
Программы разделены на категории: логические пазлы, игры со словами, алгоритмы и проблемы программирования.
Каждая программа состоит из условия и подробного решения.
https://github.com/norvig/pytudes
Пример приложения, где каждый микросервис написан на разном языке:
— Фронтенд и интерфейс написаны на VueJS.
— API авторизации генерирует JWT-токены и написано на Go
— TODO API на NodeJS
— Пользовательское API на Java
Интересно посмотреть, как разные технологии могут объединяться для создания современного веб-приложения.
https://github.com/elgris/microservice-app-example
Разработчики самой популярной JS-библиотеки локализации — Moment, выпустили библиотеку для удобной работы с датами.
Называется Luxon, это обертка для стандартного JS-модуля даты времени.
Поддерживает все современные фичи, и бонусом идет встроенная локализация от самого Moment.
https://github.com/moment/luxon
Утилита на Python, которая проверяет есть ли email в базах с утечками паролей. Затем вы вводите пароль из базы, и утилита пытается залогиниться на популярные сайты.
И таким образом находит сайты, где человек использует тот же пароль.
Лишнее напоминание, почему нужно придумывать разные пароли. Используйте только для проверки своих аккаунтов :^
https://github.com/D4Vinci/Cr3dOv3r
Библиотека, которая провращает любой JS код в красивую блок-схему. Работает на клиенте и сервере. Есть куча настроек: уровни абстракции, фокус на определенных нодах, кастомные цветовые схемы.
Отлично подойдет, когда нужно разобраться в чужом коде или зарефакторить свой.
https://github.com/Bogdan-Lyashenko/js-code-to-svg-flowchart
Канал вырос за последние месяцы. Хочу узнать какая аудитория меня теперь читает. Проголосуйте в опросе, чтобы я мог постить больше интересного.
Читать полностью…Лучшие практики программирования на Node.js. Список просто отличный, хотя я и не поклонник Node. Красиво оформлен и написан понятным языком.
Если пишите на NodeJS или учитесь, то просто must-have.
https://github.com/i0natan/nodebestpractices
В открытый доступ выложили 600 бесплатных онлайн-курсов от мировых университетов. Темы курсов самые разные: от программирования до искусства.
Есть и от российских университетов: «Программирование на Python» и «Тонкости верстки» от МФТИ, «Базы данных» от СПБГУ и другие.
По ссылке курсы удобно разделены по категориям. Обязательно найдите интересные для себя.
https://qz.com/1120344/200-universities-just-launched-600-free-online-courses-heres-the-full-list/
Почти у всех постов на канале англоязычный источник и это не случайность.
Хочу сегодня рассказать, почему английский язык необходим для программиста. И немного про его изучение.
http://telegra.ph/sh-11-02-4
Stackoverflow выпустили исследование про самые нелюбимые языки программирования. В профиле на сайте можно указать любимые и нелюбимые технологии. И они рассчитали отношение лайков к дислайкам.
В топе нелюбимых с отрывом идут Perl, Delphi и VBA. Эти языки также быстрее всех теряют пользователей. За ними идут PHP и Obj-C. Из технологий люди больше всего не любят продукты Microsoft — IE и VB.
Целиком прочитать исследование и посмотреть красивые графики можно в их блоге.
https://stackoverflow.blog/2017/10/31/disliked-programming-languages/
Airbnb рассказали, какой они видят разработку интерфейсов в будущем. Идеи должны тестироваться моментально после возникновения.
Для этого разрабатывают систему машинного обучения. Она будет разспознавать наброски прототипа. И сразу же генерировать из них сайт.
По ссылке есть видеопрезентация и можно посмотреть, как это будет работать.
https://airbnb.design/sketching-interfaces/
Уроки работы с командной строкой. Удобно разделены по главам и темам. Курс покрывает все самые необходимые команды: поиск, замена, сортировка, украшение текста и другие.
Рекомендую, тем более курс еще будет дополняться.
https://github.com/learnbyexample/Command-line-text-processing
Обработка ошибок🐛
Теперь расскажу, как мы работаем с ошибками. Большая часть бизнес-логики просто отдает данные из базы и не требует специальной обработки.
Но есть более сложные кейсы: сервис платежей, сервис пользователей и запросы к внешним API. Там мы используем Airbrake — тулзу для мониторинга ошибок. Состоит из логгера и дашборда, куда они отправляются.
Минимальный план у них стоит 120$/месяц. Для нашего количества ошибок это дороговато. Также не очень хотелось привязываться к дашборду на внешнем хосте. Поэтому подняли у себя опенсорсный дашборд Errbit и привязали логгер к нему.
Каждая ошибка там удобно разделяется по сервису и среде. Также он умеет присылать уведомления о них в Slack.
Так мы покрыли почти все кейсы и моментально узнаем об ошибках. А что вы используете для мониторинга ошибок? Жду ваших рассказов @bluzir
Фича-бранч разработка
Начну рассказывать про порядок разработки, который используем у себя на проекте. Сначала про работу с Git.
Для каждого изменения в коде создается отдельная ветка. Название ветки формируется из трех элементов.
Первый — префикс названия, указывает на тип ветки:
fix — для небольших доработок
bug — для исправления багов сайта
feature — добавление новой фунциональности
refactor — для рефакторинга кода
Второй — база ветки. Здесь мы используем номер таски из Jira. Таким образом коммиты автоматически попадают в таску.
Третий — описание ветки. В нескольких словах описывается, какая функция у ветки.
Таким образом получаем название ветки вида
<prefix>/<jira_task>_<short_description>
У такого подхода есть свои плюсы и минусы. А как вы именуете ветки у себя на проекте? Пишите @bluzir
Утилита командной строки для анализа стэка, на котором написан сайт.
Автор говорит, что приходилось устанавливать слишком много браузерных расширений для определения стэка. А здесь все можно получить одной командой.
https://github.com/WeiChiaChang/stacks-cli
Медузу можно не любить, но статьи про ее техническую сторону всегда отличные. Вот вышла новая, про так как они делали социальный редактор «Антихайп».
Описывают весь процесс от задумки до реализации. Внутри там elixir + phoenix framework, react и вебсокеты.
В статье есть даже примеры кода. Очень рекомендую.
https://medium.com/meduza-how-it-works/c8e1b76b0983
Утилита для удаления ненужных файлов из node_modules. Удаляет markdown, typescript и другие подобные файлы.
Зачем? Потому что ничто не разрастается так быстро, как эта папка. Простой способ немного уменьшить её вес.
https://github.com/tj/node-prune
Github выкатил отличный апдейт. Можно теперь включить уведомления об уязвимостях в зависимостях проекта.
Пока что поддерживаются только JS и Ruby. Поддержку Python обещают добавить в 2018.
https://github.com/blog/2470-introducing-security-alerts-on-github
Вау. Очень крутой способ подгрузки изображений, испольщующий SVG. На месте изображения показывается его контрур, геометрия или силуэт. И после загрузки он плавно перетекает в само изображение.
Выглядит очень красиво.
https://medium.freecodecamp.org/using-svg-as-placeholders-more-image-loading-techniques-bed1b810ab2c
Простые паттерны программирования на ReactJS. Автор несколько лет пишет на React и заметил, что 99% его кода повторяется. Этими паттерами он и решил поделиться в статье.
В примерах автор делает запросы к API Star Wars и показывает реальные примеры кода.
http://lucasmreis.github.io/blog/simple-react-patterns/
Какой у вас опыт программирования?🐱
Есть небольшой опыт написания кода – 35
👍👍👍👍👍👍👍 45%
Есть большой опыт написания кода – 23
👍👍👍👍👍 29%
Не программирую, но хочу научиться – 16
👍👍👍 21%
Не программирую, но интересно читать про IT – 4
👍 5%
👥 78 people voted so far.
Список из полезных ссылок для начинающего фронтендера. Десятки бесплатных туториалов и книг для изучения HTML, CSS и Git.
А еще там есть полезные аггрегаторы ссылок, рассылки и чаты для фронтендеров.
https://github.com/thedaviddias/Resources-Front-End-Beginner
Список самых частых проблем при работе с Git и их решения. Удобно разделены по категориям и написаны понятным языком.
Рекомендую добавить в закладки и смотреть при любых проблемах с Git.
https://github.com/k88hudson/git-flight-rules
Библиотека для построения SVG-диаграмм на сайтах. Она простая, отзывчивая и без зависимостей. Диграммы напоминают гитхабовские с красивыми цветами и анимациями.
https://github.com/frappe/charts
Готовлю сейчас еще один текст про анализ жизни при помощи Python. Для этого решил немного прокачать качество графиков и наткнулся на туториал.
Здесь рассказывают, как сделать Python-графики красивыми и информативными. За образец взяты графики сайта fivethirtyeight.
https://www.dataquest.io/blog/making-538-plots/
Звуковую каптчу Google научились разгадывать с вероятностью в 85%. Для распознавания речи используют Python и открытые API. Смешно, что два из этих API предоставляет сам Google.
В примере кода регистрируются на Reddit c разгадыванием каптчи.
https://github.com/ecthros/uncaptcha
На прошлой неделе написал текст о том, что ReactJS обязательно вам пригодится, и как начать его учить.
Сегодня выкладываю его продолжение о том, как начать использовать дико крутую связку из React и Redux.
http://telegra.ph/sh-10-24