Будете ли вы использовать пистолет, чтобы убить лету? Ответ — нет. То же самое идет, когда вы хотите написать приложение Microvice, которое будет максимальным количеством 10 тысяч строк кода. Не переусердствовать это.
Хорошо, вы пишете и поддерживаете большие базы кода. Некоторые могут быть 100K + строки кода, но вам нужно преодолеть свои привычки и думать по-другому. Этот пост поможет вам распутать загадки писать маленькие и ремонторуемые микросервисы. Предложения являются самоуверенностью, но на практике на практике в бизнесе миллиона долларов.
TLDR;
Минервисты являются небольшими программными системами. Вы можете благополучно отбросить MVC. Скажите нет в ORM, а также не принять дизайн-образец багажника для микросервисов. Сосредоточьтесь на выполнении, читабельности и ремонсировании кода, а не каких-либо старых правил и шаблонов. Эти шаблоны были сделаны, когда люди не делали микросервисы.
Зачем писать микросервисы в первую очередь?
Архитектура микросервисов, на мой взгляд, нарушает один или несколько монолитов на несколько меньших систем. Это более ремонтопригодны, независимо разработаны и развернутыми произведениями программного обеспечения на основе бизнес-функций. Эти меньшие (предположительно «микро») системы должны сосредоточиться только на одной бизнес-функции и делать это хорошо. Улов здесь «микро», эти кусочки в идеале должны быть под углом 10 000 линий кода.
Поскольку они независимы, это помогает бизнес-выпуску быстрее.
Команда поставок не зависит от команды заказа. Что-то развернутое на приложении поставок никогда не собирается разбить оформление заказа.
Это становится очень отделенным. Радиус взрыва каждого изменения контролируется. Это причина быстрого усыновления микросервиса.
Теперь давайте посмотрим на то, как привыкли делать вещи и почему это имеет меньше смысла в этой эпоху микросервисов.
Вам нужен MVC?
Модель-просмотр-контроллер, я познакомился с ним в 2007 году или, может быть, немного раньше. Затем я думал, что это была серебряная пуля для всех проблем архитектуры программного обеспечения. Я больше не держу это мнение.
Да, вы работали с Java или PHP, и все другие рамки были на основе MVC. Теперь вам больше не нужно строго о MVC.
Сосредоточьтесь на ясности и добиться дела.
Используйте контроллеры, если хотите, и если это все еще имеет смысл. Думаю, как мое приложение получает HTTP-запрос, и он должен вернуть ответ HTTP. Подумайте о том, чтобы иметь бэкверную API и интерфейс (ы) потребляющим его. Проверьте код ниже, это, безусловно, не MVC:
async function get(params) { const today = new Date().toISOString().split('T')[0]; const {fromCurrency='AUD', toCurrency='USD', onDate=today} = params; let exchangeRates = await db.query( `SELECT rate, created_at FROM exchange_rates WHERE from_currency = ? AND to_currency = ? AND on_date = ?`, [fromCurrency, toCurrency, onDate] ); if (exchangeRates.length) { const rate = Number(exchangeRates[0].rate); console.log(`Found exchange rate of ${rate} for ${fromCurrency} to ${toCurrency} of ${onDate} in the db`); return {fromCurrency, toCurrency, onDate, rate}; } return getExternal(fromCurrency, toCurrency, onDate); } module.exports = { get }
Вы можете увидеть полное приложение здесь Отказ Убедитесь, что структура не MVC:)
Так что вместо того, чтобы делать усилия, чтобы получить точные линии M-V-C, тесты записи, внедряют непрерывную интеграцию. Добавьте некоторые журналы и мониторинг в приложение. Сделайте необходимый код, сохраните его как можно лучше и просто.
Не берите наверху ORM
Обращение объекта сопоставление (ORM) Когда я впервые увидел в действии ORM, я сказал себе, это одно из лучших, которые, как известные программированию. 10+ лет спустя я был бы осторожен, чтобы предложить ОРМ к любому инженеру программного обеспечения.
В прошлом году я поощрял полную реализацию ORM для RAW SQL-запроса SQL, и он сделал эту часть приложения на 20% быстрее.
Кроме того, в нем транзакции базы данных были очевидны, и код был гораздо более читаемым, следовательно.
Данные Mapper или активная запись оба приносят свои собственные мнения, способы выполнения вещей и лишнего веса. Это не только вызывает проблемы с производительностью, но и чтение кода страдает. Думайте о дообразию Pre и Post Cooks/Dectrine Event Counder, они работают как магии, и всегда сложно понимать магию.
Просто попробуйте это, объясните, как работает, связанный с ORM код вставки VS, как простая и простая вставка SQL SQL-запрос работает к инженеру программного обеспечения для начинающих/младших программ. Вы уже сожалеете об использовании этого ORM. Особенно в контексте микросервисов ORM является явным накладным расходом. Предполагается, что микросервис имеет максимум 10 тысяч линий кода и вряд ли влияет на 10 таблиц, поэтому просто не используйте ORM, период.
Шаблоны дизайна могут быть багажом
Я не говорю, что вам не нужно узнать о Шаблоны проектирования программного обеспечения . Вы должны знать о прочном, законе Демететера, фабрики, шаблон стратегии, синглтоном, шаблоном адаптера и т. Д.
Ну, большинство из них имеют смысл, если вы делаете объектно-ориентированные программирование правильно? Что, если вы пишете микросервис в узле JS, это 1К строки кода, распространяемых на ~ 7 файлов.
Это делает один небольшой ломтик бизнес-функции. Все эти шаблоны становятся приятно знать вещи в этот момент. Переосмысление на него все эти шаблоны и правила были сделаны с учетом большого кода, и до того, как микросервисы были широко приняты.
Шаблоны дизайна актуальны для кодовой базы, которая уже большой, и в ближайшие 6-12 месяцев будет больше, ваш обычный монолит. Они могут оказаться «дополнительным багажом» для сервиса, который сейчас составляет 100 линий кода и станет 1000-х годов кода в ближайшие 6-12 месяцев. Мы никогда не предвидим, чтобы быть больше, чем это, потому что сделать эту другую часть, у нас будет еще одно микросервис. Итак, держите код Microvice Code FAT бесплатно и хорошо проверены.
Заключение
Если вы все еще хотите кодировать ваше микросервис, как последний монолит, который вы работали, возможно, вы делаете что-то не так. Подумайте об этом снова, если вы идете на однодневную поездку, вы не упаковываете и несем вещи, как вы собираетесь на 2 недели. Подумайте о производительности и обслуживании кода, пусть данные будут говорить для вас и нарушить правила. Happy Software Engineering!
Первоначально опубликовано в geshan.com.np Отказ
Оригинал: «https://dev.to/geshan/dont-code-your-microservice-like-a-monolith-keep-it-maintainable-not-over-engineered-12pc»