Pull to refresh
0
0
Unknown Hero @UnknownHero

Software

Send message

Когда-нибудь это включат в документацию

export interface IService { }
export const IService = Symbol.for('IService')

Если не получается отличить гугловского копипастера от «какого-то там идеальный разработчик» за собеседование и сколько там месяцев работы, если разработчики резко достигают плато только при первых трудностях, то плато далеко не у них, а у автора. И это плато не соответствует требованиям должности в отличии от гугловиков которые справлялись со своими задачами.
Во всех архитектурах микросервисов и подобных решений не хватает дополнительных метрик связанными с жизненными циклами бизнес логики. Нужно понимать, что сформировавшийся логике легче может жить в вакууме, чем новым идеям, которые могут переписываться хоть каждую неделю.

В своей практике делаю два условных слоя: Сервисы и Бизнес логика. Также есть их этапы эволюции:

1. Монолит. Сервисы отвечают за свою предметную область и вначале предоставляют просто CRUD, Бизнес Логика же использует эти сервисы под свои потребности. Если бизнес логика повторяется в нескольких местах, то я оставляю дубликат кода, так как логика может поменять в одном из мест достаточно быстро.

2. Монолит. При формировании уже устойчивой бизнес логики можно анализировать дубликаты кода для определённой предметной области и выносит в соответствующий Сервис. Тем самым мы уменьшаем код в Бизнес Логики и начинаем наращивать сервисы устойчивой логикой уменьшая вариативность их использования.

3. Микросервисы. После формирования Сервисов с решением своей задачи в предметной области(а не CRUD), можно выносит такие Сервисы в отдельные узлы со своими техническими особенностями при необходимости. При этом у нас остаётся оркестрация в виде Бизнес Логики.

Описанный выше подход не использует триггеры и эвенты, Сервисы не общаются между собой никак, вся логика вызовов строится внутри Бизнес Логики, на то это и оркестрация. Если посередине Процесса-1 одного сервиса нужно вызвать Процесс-2 другого сервиса, то Процесс-1 просто разбивается на два отдельных Процесса и Бизнес логика вызывает их по порядку передавая данные между ними.

Также это очень хорошо ложится под паттерн Saga и вопрос с распределёнными транзакциями.

P.S.
В 2012 году наткнулся на блог Александра, даже задавал вопросы по архитектуре, состоял в .net рассылке. Спасибо большое, Вы внесли большой вклад в моё развитие. Рад, что спустя такое количество времени нахожу общие идеи и могу понимать все эти решения.
Шаг 5…
там p12 в pem
«Convert P12 file for Push Notification to PEM format»
Вот наивные, они ещё не поняли, что JavaScript управляет этим миром.

А по делу, есть Roadmap? В сети не нашёл, может упустил что-то.
«Когда внедрять js-шаблонизатор ради генерации несложного набора html элементов слишком дорого...»

Даже не знаю, что дороже.
Теперь ждём async/await.
Хотя и с промисами хорошо идёт.
Один из немногих источников спама в моей почте.
Даже в прощальном письме что-то рекламируют.
Какой подход, такой и результат.
Там промисы внутри

Basic Example

var async = require('asyncawait/async');
var await = require('asyncawait/await');
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs')); // adds Async() versions that return promises
var path = require('path');
var _ = require('lodash');

/** Returns the number of files in the given directory. */
var countFiles = async (function (dir) {
var files = await (fs.readdirAsync(dir));
var paths = _.map(files, function (file) { return path.join(dir, file); });
var stats = await (_.map(paths, function (path) { return fs.statAsync(path); })); // parallel!
return _.filter(stats, function (stat) { return stat.isFile(); }).length;
});
Следующая статья уже была написана habrahabr.ru/post/144626/
Именно так, просто не хотел писать коммент-статью про это ) Спасибо!
Docker — это обёртка над lxc.

Есть и ещё одна функция, слои. Слой — это как commit в git.
Т.е. пишите вы свой Dockerfile

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

И при каждом изменении nginx.conf будет создаваться новый коммит.
Хранить эту историю изменений можно публично hub.docker.com/, либо приватно github.com/docker/docker-registry.
Удобно, если новая версия перестала работать, можно откатить до работающей.

И скоро они сделают своё средство для оркестрации, и тогда можно будет без проблем работать с зоопарком контейнеров.

Вроде, всё
docs.docker.com/userguide/dockervolumes/

При запуске (docker run) вставить вот такой флаг: -v /путь/на/хосте:/путь/в/контейнере
Так же можно делать и в fig
Бывают задачи, когда нужно рендрить шаблон и на клиенте и на сервере (привет SEO).
github.com/firehist/angular-twig-pack — вот такие штуки позволяют делать это безболезнено.

Information

Rating
Does not participate
Location
Таганрог, Ростовская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Chief Technology Officer (CTO)
Lead
TypeScript
React
NestJS
Development management
Building a team
Startup management
Kanban
Strategic planning