I hate overtime
#cqrs Всем привет, котаны, погнали дальше с нашими CQRSами. Как бы нам еще подтюнить наш RP? А что если вместо ванильной 3й нормальной формы, в которой лежат данные в нашем WP заиметь сразу хранилище с готовыми к выдаче на клиент данными? Такой себе локальный…
#cqrs
Итак, подытожим: за возможность практически линейно скейлиться до небывалых высот мы заплатим:
- консистентностью данных
- конским порогом входа (нам нужен чувак, как минимум, умеющий в EDA, CQRS и DDD)
- риском выплюнуть пользователю мусор вместо данных из нашего RP, если считаем аггрегаты
- скотски запутанной логикой на сагах и FSM
Выглядит не очень радужно, правда? На самом деле все не так плохо. Есть очень много областей, где можно уверенно тащить cqrs и не знать горя. Отличный пример -- уже упоминавшиеся выше нотификации. Новостные ленты, тоже отлично строятся на cqrs. Более того, я встречал достаточно много людей успешно выстраивающих приложения на cqrs и в e-commerce и даже в финансовой сфере. Помимо этого, есть еще набор фреймворков c Lagom во главе для облегчения жизни и уменьшения бойлерплейта. Главное, тащем-то как и всегда, сначала думать головой а не просто делать так же как сосед слева😉
Итак, подытожим: за возможность практически линейно скейлиться до небывалых высот мы заплатим:
- консистентностью данных
- конским порогом входа (нам нужен чувак, как минимум, умеющий в EDA, CQRS и DDD)
- риском выплюнуть пользователю мусор вместо данных из нашего RP, если считаем аггрегаты
- скотски запутанной логикой на сагах и FSM
Выглядит не очень радужно, правда? На самом деле все не так плохо. Есть очень много областей, где можно уверенно тащить cqrs и не знать горя. Отличный пример -- уже упоминавшиеся выше нотификации. Новостные ленты, тоже отлично строятся на cqrs. Более того, я встречал достаточно много людей успешно выстраивающих приложения на cqrs и в e-commerce и даже в финансовой сфере. Помимо этого, есть еще набор фреймворков c Lagom во главе для облегчения жизни и уменьшения бойлерплейта. Главное, тащем-то как и всегда, сначала думать головой а не просто делать так же как сосед слева😉
#sizing
Котаны, привет! Так уж получилось, что последнее время мне очень часто приходится считать сайзинг для всяких разных опенсурсных коробочек и, соответственно, всеми правдами и не правдами искать рекомендации от производителя по прожорливости их изобретений. И вот мне это надоело, так что решил тут сколлекционировать:
+ Apache Kafka
+ Dremio
+ Redis
+ Elasticsearch (здесь все сложно. По ссылке статья на хабре с кучей полезных ссылок на вебинары elastic'а с рекомендациями по расчетам)
+ MongoDb (тут видос. Извинити)
+ Postgres (пдфка про форк, но и к обычному постгресу подходит. Ну и отличный видос про настройку)
+ Kubernetes (раз и два)
+ etcd
+ minio
+ Prometheus память диски
Наверняка подъедет что-то еще, так что будут UPD
Котаны, привет! Так уж получилось, что последнее время мне очень часто приходится считать сайзинг для всяких разных опенсурсных коробочек и, соответственно, всеми правдами и не правдами искать рекомендации от производителя по прожорливости их изобретений. И вот мне это надоело, так что решил тут сколлекционировать:
+ Apache Kafka
+ Dremio
+ Redis
+ Elasticsearch (здесь все сложно. По ссылке статья на хабре с кучей полезных ссылок на вебинары elastic'а с рекомендациями по расчетам)
+ MongoDb (тут видос. Извинити)
+ Postgres (пдфка про форк, но и к обычному постгресу подходит. Ну и отличный видос про настройку)
+ Kubernetes (раз и два)
+ etcd
+ minio
+ Prometheus память диски
Наверняка подъедет что-то еще, так что будут UPD
#postgres
Шикарнейший лонгрид про тюнинг постгреса от выбора железок и до всеми любимого postgresql.conf
Шикарнейший лонгрид про тюнинг постгреса от выбора железок и до всеми любимого postgresql.conf
EDB
PostgreSQL Performance Tuning: Optimize Your Database Server
Enhance your PostgreSQL database performance with EDB's expert tuning tips. Optimize queries, autovacuum, and more for a faster, more efficient database.
Forwarded from Bortlog
Recently I've got a few interns to look after and mentor, so one of them asked for some advice on improving their system design skills.
So I gave a long monolog on digging through the layers of abstractions and being curious and genuinely understanding how things work. After it, I suggested them to read a "Designing Data-Intensive Applications" book and also prepared a shortlist of talks that can work as conversation starter or places from where you can start digging deeper.
Here is the list:
https://youtu.be/WE9c9AZe-DY
https://youtu.be/j6ow-UemzBc
https://youtu.be/1TIzPL4878Q
https://youtu.be/CZ3wIuvmHeM
https://youtu.be/I32hmY4diFY
https://youtu.be/hnpzNAPiC0E
https://youtu.be/y2j_TB3NsRc
https://youtu.be/t7iVCIYQbgk
https://youtu.be/IO4teCbHvZw
https://youtu.be/6w6E_B55p0E
https://youtu.be/B5NULPSiOGw
https://youtu.be/_M-oHxknfnI
https://youtu.be/lKXe3HUG2l4
https://youtu.be/r-TLSBdHe1A
https://youtu.be/fU9hR3kiOK0
https://youtu.be/lJ8ydIuPFeU
https://youtu.be/5ZjhNTM8XU8
https://youtu.be/9RMOc0SwRro
https://youtu.be/tM4YskS94b0
https://youtu.be/H0i_bXKwujQ
https://youtu.be/m64SWl9bfvk
https://youtu.be/cNICGEwmXLU
https://youtu.be/em9zLzM8O7c
https://youtu.be/ohvPnJYUW1E
https://youtu.be/HJIjTTHWYnE
Write in the comments: what else would you recommend or what talk you'd add to the list.
So I gave a long monolog on digging through the layers of abstractions and being curious and genuinely understanding how things work. After it, I suggested them to read a "Designing Data-Intensive Applications" book and also prepared a shortlist of talks that can work as conversation starter or places from where you can start digging deeper.
Here is the list:
https://youtu.be/WE9c9AZe-DY
https://youtu.be/j6ow-UemzBc
https://youtu.be/1TIzPL4878Q
https://youtu.be/CZ3wIuvmHeM
https://youtu.be/I32hmY4diFY
https://youtu.be/hnpzNAPiC0E
https://youtu.be/y2j_TB3NsRc
https://youtu.be/t7iVCIYQbgk
https://youtu.be/IO4teCbHvZw
https://youtu.be/6w6E_B55p0E
https://youtu.be/B5NULPSiOGw
https://youtu.be/_M-oHxknfnI
https://youtu.be/lKXe3HUG2l4
https://youtu.be/r-TLSBdHe1A
https://youtu.be/fU9hR3kiOK0
https://youtu.be/lJ8ydIuPFeU
https://youtu.be/5ZjhNTM8XU8
https://youtu.be/9RMOc0SwRro
https://youtu.be/tM4YskS94b0
https://youtu.be/H0i_bXKwujQ
https://youtu.be/m64SWl9bfvk
https://youtu.be/cNICGEwmXLU
https://youtu.be/em9zLzM8O7c
https://youtu.be/ohvPnJYUW1E
https://youtu.be/HJIjTTHWYnE
Write in the comments: what else would you recommend or what talk you'd add to the list.
YouTube
How Slack Works
QCon San Francisco, the international software conference, returns November 17-21, 2025. Join senior software practitioners from early adopter companies as they share real-world insights and actionable advice to help you adopt the right technologies and practices.…
Forwarded from dd if=/dev/stuff of=/dev/tg
Я сдул пыль со своего блога, немного его причесал и выложил туда все публичные статьи, которые писал про функциональное программирование, в том числе переведенные на английский статьи из цикла «Введение в fp-ts» с Хабра.
Встречайте: https://ybogomolov.me 🤘🏻
Серия "Intro to fp-ts":
https://ybogomolov.me/01-higher-kinded-types
https://ybogomolov.me/02-type-classes
https://ybogomolov.me/03-nullables-exceptions
https://ybogomolov.me/04-tasks
Серия #MonadicMondays:
https://ybogomolov.me/monadic-monday-compilation-april
https://ybogomolov.me/monadic-monday-compilation-may
https://ybogomolov.me/monadic-monday-compilation-june
https://ybogomolov.me/monadic-monday-compilation-july
Прочее:
Статья про типобезопасный фронт: https://ybogomolov.me/typesafe-typescript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education
В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
Встречайте: https://ybogomolov.me 🤘🏻
Серия "Intro to fp-ts":
https://ybogomolov.me/01-higher-kinded-types
https://ybogomolov.me/02-type-classes
https://ybogomolov.me/03-nullables-exceptions
https://ybogomolov.me/04-tasks
Серия #MonadicMondays:
https://ybogomolov.me/monadic-monday-compilation-april
https://ybogomolov.me/monadic-monday-compilation-may
https://ybogomolov.me/monadic-monday-compilation-june
https://ybogomolov.me/monadic-monday-compilation-july
Прочее:
Статья про типобезопасный фронт: https://ybogomolov.me/typesafe-typescript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education
В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
ybogomolov.me
Intro to fp-ts, part 1: Higher-Kinded Types
Forwarded from ДевОпс Інженер 🇺🇦 (Oleg Mykolaichenko)
Sloth, Pyrra
Весной я упоминал спеку OpenSLO и вероятность реализации оператора, или контроллера по этой спецификации для создания дашбордов или алертов. Эта поделка была удачно забыта, но вчера в соседнем чатике нахожу тулу:
✅ https://github.com/slok/sloth
Суть Sloth - описать SLO, дашборду и алерт как манифест в YAML, в OpenSLO формате. Прикол!
В README по ссылке есть пример, а в репозитории - helm чарт.
Дальше, в комментариях вижу:
✅ https://github.com/pyrra-dev/pyrra
Pyrra - status page на анаболических стероидах и тестостероновых бустерах. Выглядит космически - собираем все сервисы платформы, и генерим одну UI для SLO. Бомба.
В issues спрашивают, будет ли поддержка описания в OpenSLO, ответ - ‘yes, for sure’.
Спонсор поста - @oleg_log, подсмотрел там эти решения.
Наша реализация с grafana-operator и GrafanaDashboard CRD внезапно стала выглядеть как Monitoring Platform 101, но уже отчетливо видно, где следующая итерация. 😅
Весной я упоминал спеку OpenSLO и вероятность реализации оператора, или контроллера по этой спецификации для создания дашбордов или алертов. Эта поделка была удачно забыта, но вчера в соседнем чатике нахожу тулу:
✅ https://github.com/slok/sloth
Суть Sloth - описать SLO, дашборду и алерт как манифест в YAML, в OpenSLO формате. Прикол!
В README по ссылке есть пример, а в репозитории - helm чарт.
Дальше, в комментариях вижу:
✅ https://github.com/pyrra-dev/pyrra
Pyrra - status page на анаболических стероидах и тестостероновых бустерах. Выглядит космически - собираем все сервисы платформы, и генерим одну UI для SLO. Бомба.
В issues спрашивают, будет ли поддержка описания в OpenSLO, ответ - ‘yes, for sure’.
Спонсор поста - @oleg_log, подсмотрел там эти решения.
Наша реализация с grafana-operator и GrafanaDashboard CRD внезапно стала выглядеть как Monitoring Platform 101, но уже отчетливо видно, где следующая итерация. 😅
GitHub
GitHub - slok/sloth: 🦥 Easy and simple Prometheus SLO (service level objectives) generator
🦥 Easy and simple Prometheus SLO (service level objectives) generator - slok/sloth
ДевОпс Інженер 🇺🇦
Sloth, Pyrra Весной я упоминал спеку OpenSLO и вероятность реализации оператора, или контроллера по этой спецификации для создания дашбордов или алертов. Эта поделка была удачно забыта, но вчера в соседнем чатике нахожу тулу: ✅ https://github.com/slok/sloth…
вот люблю красивые решения для мониторинговых дашбордов с зонтиками, бантиками и интуитивным дрилл-дауном. Но тут нашел просто идеал дашборда.
Даже если выкинуть весь хайповый мусор типа AI и NLP, то оно красивое, удобное и полезное.
Самое интересное, что видосу уже 5 лет)
Даже если выкинуть весь хайповый мусор типа AI и NLP, то оно красивое, удобное и полезное.
Самое интересное, что видосу уже 5 лет)
YouTube
Intelligent Dashboard to help total factory optimization
Fujitsu Forum 2016: http://journal.jp.fujitsu.com/en/ff2016/
#postgres #db
Очень полезная статья про тюнинг чекпоинтов в постгресе + бонусом инструкция как рассчитывать размер WAL
Очень полезная статья про тюнинг чекпоинтов в постгресе + бонусом инструкция как рассчитывать размер WAL
2ndQuadrant | PostgreSQL
Basics of Tuning Checkpoints - 2ndQuadrant | PostgreSQL
Let me walk you through the basics of tuning checkpoints in PostgreSQL, which may significantly affect performance in write-intensive workloads.
#arch
Так уж получается, что последнее время на работе чаще рисую картинки в draw.io чем кодец в ide. И проблема обычно в том, как при разрастании картинки, не превратить ее в паутину из стрелочек. Недавно открыл для себя вот такое: https://blogs.mulesoft.com/api-integration/strategy/a-visual-language-for-digital-integration/ и пока что доволен как черт! Тем кто часто рисует data-flow диаграммы и страдает -- очень рекомендую!
Кстати, в блогпосте есть несколько ссылок на крутейшие книги по системной архитектуре. Подарочек тем, кому нечего читать;)
Так уж получается, что последнее время на работе чаще рисую картинки в draw.io чем кодец в ide. И проблема обычно в том, как при разрастании картинки, не превратить ее в паутину из стрелочек. Недавно открыл для себя вот такое: https://blogs.mulesoft.com/api-integration/strategy/a-visual-language-for-digital-integration/ и пока что доволен как черт! Тем кто часто рисует data-flow диаграммы и страдает -- очень рекомендую!
Кстати, в блогпосте есть несколько ссылок на крутейшие книги по системной архитектуре. Подарочек тем, кому нечего читать;)
MuleSoft Blog
A visual language for digital integration
In my last blog, I introduced terminology that can be used to label common concepts and patterns in the realm…
Пожалуй прикопаю тут отличное объяснение на пальцах BGP anycast'а. Вдруг кому-то тоже пригодится сшивать датацентры и строить метеоритоустойчивость из палок и шишек
here blog
Об Anycast
Как сделать так, чтобы ваш сервис был всегда доступен? Дублировать, запускать несколько экземпляров. Собственно, та самая балансировка нагрузки. Когда за одним балансировщиком стоит несколько серверов, и запросы распределяются между ними. Но сам балансировщик…
Дорогие подписчики, всегда старался держать канал в стороне от политики, но то что сейчас происходит -- это полный п$здец. Украинцы, держитесь! Сил вам и здоровья! #нет_войне
#network #proxy
В очередной раз объясняя коллеге как клиенты работают с HTTP-прокси(нет, не просто меняем урл на урл прокси-сервера) понял, что надо найти хорошую статью. Внезапно нашлось с трудом, так что решил поделиться
В очередной раз объясняя коллеге как клиенты работают с HTTP-прокси(нет, не просто меняем урл на урл прокси-сервера) понял, что надо найти хорошую статью. Внезапно нашлось с трудом, так что решил поделиться
Ibm
Advanced HTTP and TCP proxy configuration
The HTTP protocol runs on top of the TCP protocol, but provides extra information about the message destination. For that reason, the two proxies are configured differently.
#auth #админство #security
Инструкция по настройке времен жизни токена в ADFS. Есть настройки и на SSO токена самого ADFS и SAML assertion’а. Хозяюшке на заметку так же полный список всех пропертей Relying Party Trust
Инструкция по настройке времен жизни токена в ADFS. Есть настройки и на SSO токена самого ADFS и SAML assertion’а. Хозяюшке на заметку так же полный список всех пропертей Relying Party Trust
Jacques Dalbera's IT world
ADFS settings WebSSOLifetime and Token Lifetime, NotBeforeSkew
This post will try to explain some relevant parameters from the ADFS side. I’m not saying the defaults aren’t good, that’s something you’ve got to decide for yourself. Introduction WS-Fed/SAML prot…
#k8s
Все кубернетесоводы наверняка всё знают про ингресы, поэтому сегодня я вам принес про темную лошадку сетей k8s. Встречаем egress. Очень советую почитать тем, у кого лютуют безопасники вооруженные файрволами
Все кубернетесоводы наверняка всё знают про ингресы, поэтому сегодня я вам принес про темную лошадку сетей k8s. Встречаем egress. Очень советую почитать тем, у кого лютуют безопасники вооруженные файрволами
docs.tigera.io
Kubernetes egress | Calico Documentation
Learn why you should restrict egress traffic and how to do it.
#postgres
Думаю, что ко всем рано или поздно приходят безопасники и просят пошифровать уютненький кластер постгреса, но, к сожалению, в ванильном постгресе нет ничего для шифрования. Для тех кто долго и мучительно выбирал между pg_crypto/костылем на драйвере в ОРМ/LUKSом, чуваки из arctype сделали обзорный гайд во все это мракобесие.
Их рецепт по TDE в конце статьи не рабочий, но обзор тем не менее все еще годный
Думаю, что ко всем рано или поздно приходят безопасники и просят пошифровать уютненький кластер постгреса, но, к сожалению, в ванильном постгресе нет ничего для шифрования. Для тех кто долго и мучительно выбирал между pg_crypto/костылем на драйвере в ОРМ/LUKSом, чуваки из arctype сделали обзорный гайд во все это мракобесие.
Их рецепт по TDE в конце статьи не рабочий, но обзор тем не менее все еще годный
#devops #swarm
Для тех кто, как и я, все еще нежной любовью любит Docker Swarm обнаружил шикарный сайтец с набором гайдов по сворму. Тут желающие найдут инструкции как
- поднять ингрес на traefic без палок шишек и ручного vrrp
- настроить прометеус с нодэкспортерами (а с оверлейной сетью сворма это то еще испытание)
- кучу других вкусностей и полезностей
Для тех кто, как и я, все еще нежной любовью любит Docker Swarm обнаружил шикарный сайтец с набором гайдов по сворму. Тут желающие найдут инструкции как
- поднять ингрес на traefic без палок шишек и ручного vrrp
- настроить прометеус с нодэкспортерами (а с оверлейной сетью сворма это то еще испытание)
- кучу других вкусностей и полезностей
dockerswarm.rocks
Docker Swarm Rocks
Docker Swarm mode ideas and tools
#как_это_работает
Котаны, у меня тут чутка прибавилосьжелания жить свободного времени и я решил вдохнуть в этот канальчик вторую жизнь и начну, пожалуй, с теперь (надеюсь) постоянной рубрики «как это работает». Так уж получилось, что я щас работаю в достаточно крупном вендоре отечественного ПО, которое вот только чайники не делает и могу чутка посливать вам инсайдерской инфы о том как устроены разные велелые програмки, которыми вы каждый день пользуетесь на рабочих местах)
Начнем, пожалуй, с того, с чем я имею дело каждый день, а именно, с кадрового документооборота (или просто КЭДО).
Вообще КЭДО, если сильно утрировать, это крайне простая штука: берем движок процессов (вполне сойдет всем знакомая Camunda), добавляем умение подписывать электронными подписями и вуаля! Охапка дров и КЭДО готов 🙂 На самом деле, все, конечно, несколько сложнее.
Для начала, подписей бывает 3: простая(ПЭП), неквалифицированная(НЭП) и квалифицированная(КЭП), и если вы хотите (а вы хотите) соблюдать законодательство, то вам придется скорее всего научиться во все 3. Законодательство, кстати, нам подарило всего-то 2 закона: № 63-ФЗ "Об электронной подписи" и № 377-ФЗ «О внесении изменений в Трудовой кодекс Российской Федерации», где первый рассказывает что такое ЭП, а второй какие документы можно подписывать какой ЭП. Внезапно, например, есть доки, которые до сих пор можно подписывать только ручкой в кадрах. Про то что такое ЭП, как ей подписывать и вот это все в следующий раз
Помимо подписей вам в вашем КЭДО еще крайне желательно было бы иметь архив. Дело в том, что ФЗ 377 еще и регламентирует сколько должны жить различные документы в вашем КЭДО и там, внезапно, есть доки со сроком жизни 75 лет (КАРЛ!). Вряд ли вы хотите хранить у себя в живой системе ПДФки 75летней давности, поэтому родина дала нам архив. Про архив тоже, видимо, будет отдельная часть.
Ну а так, накручиваем рюшек и бантиков и вот оно, цифровая трансформация вашего HR 🙂
Котаны, у меня тут чутка прибавилось
Начнем, пожалуй, с того, с чем я имею дело каждый день, а именно, с кадрового документооборота (или просто КЭДО).
Вообще КЭДО, если сильно утрировать, это крайне простая штука: берем движок процессов (вполне сойдет всем знакомая Camunda), добавляем умение подписывать электронными подписями и вуаля! Охапка дров и КЭДО готов 🙂 На самом деле, все, конечно, несколько сложнее.
Для начала, подписей бывает 3: простая(ПЭП), неквалифицированная(НЭП) и квалифицированная(КЭП), и если вы хотите (а вы хотите) соблюдать законодательство, то вам придется скорее всего научиться во все 3. Законодательство, кстати, нам подарило всего-то 2 закона: № 63-ФЗ "Об электронной подписи" и № 377-ФЗ «О внесении изменений в Трудовой кодекс Российской Федерации», где первый рассказывает что такое ЭП, а второй какие документы можно подписывать какой ЭП. Внезапно, например, есть доки, которые до сих пор можно подписывать только ручкой в кадрах. Про то что такое ЭП, как ей подписывать и вот это все в следующий раз
Помимо подписей вам в вашем КЭДО еще крайне желательно было бы иметь архив. Дело в том, что ФЗ 377 еще и регламентирует сколько должны жить различные документы в вашем КЭДО и там, внезапно, есть доки со сроком жизни 75 лет (КАРЛ!). Вряд ли вы хотите хранить у себя в живой системе ПДФки 75летней давности, поэтому родина дала нам архив. Про архив тоже, видимо, будет отдельная часть.
Ну а так, накручиваем рюшек и бантиков и вот оно, цифровая трансформация вашего HR 🙂
Внезапно, спустя почти 5 лет собрался что-то попрограмировать на C# и понял, что за эти годы язык и все что вокруг него поменялось… примерно никак :) Такое ощущение, что за пять лет изобрели только рекорд-типы (HKT что бы сделать рекорды полезными и либы для рекордов, кстати, не изобрели) и фреймворк над фреймворком. Котаны, есть сишарперы, расскажите, может чего-то вышло таки полезного?
I hate overtime
#как_это_работает Котаны, у меня тут чутка прибавилось желания жить свободного времени и я решил вдохнуть в этот канальчик вторую жизнь и начну, пожалуй, с теперь (надеюсь) постоянной рубрики «как это работает». Так уж получилось, что я щас работаю в достаточно…
#как_это_работает
(продолжение)
и так, электронные подписи.
Как мы с вами выяснили, их бывает 3: простая(ПЭП), усиленная неквалифицированная(УНЭП) и усиленная квалифицированная(УКЭП). Собственно что это такое и почему их 3? Давайте начнем с простого, т.е. с ПЭП. На самом деле, ПЭП — это просто надписьна заборе «здесь был Вася». Т.е. прямо на документе рисуется некий штамп, который позволяет идентифицировать подписанта. Прям максимально тупой аналог автографа на бумаге. Ну ок, в чем проблема, зачем еще 2 подписи? На самом деле проблемы 2: во-первых, после подписания ПЭПом документ может быть изменен. Т.е. ПЭП по-дефолту никак не контролирует изменения документа после подписания. Ну ок, скажете вы, давайте добавим в ПЭП временную метку, или, еще лучше, хэш документа. Это конечно поможет, но есть еще и вторая проблема — лигитимность подписи. Дело в том, что подписывает ПЭПом сама система документооборота, которая не является СКЗИ и вообще-то не обеспечивает никаких функций безопасности, поэтому и подделать эту подпись абсолютно не проблема. И вот тут-то вот на сцену выходят усиленные подписи (УНЭП и УКЭП). Вот эти подписи уже формируются через взрослую криптографию и происходит это в специально-обученной программе Удостоверяющий Центр (или просто УЦ). Проще всего представить все это безобразие как некую пару ключей ассиметричного шифрования (тем более, что именно так и было в прошлой редакции закона о подписях). Т.е. у нас есть задача: всегда знать, что документ был подписан определенным лицом, ну и мы так-то отлично умеем ее решать. Даем «лицу» секретный ключ, которым он зашифрует(подпишет) документ, а всем остальным дадим публичный ключ, с помощью которого они смогут пойти и проверить подпись и вуаля! На самом деле, документ даже не шифруют, а от него берут хеш и хеш шифруют, формируя как раз ту самую подпись, которую просто кладут рядом с документом или даже встраивают в документ. Примерно так и работают УНЭП и УКЭП. Для того что бы гарантировать, что документ не будет изменен после подписания, в подписи присутствуют таймстампы. Ну кажется все, ща заживем, осталось только разобраться почему усиленных подписей аж целых 2. Тут все дело в этом самом УЦ, он в этой схеме выполняет аж 3 функции: во-первых, он выпускает те самые приватные ключи, которые позволяют подписывать документы, во-вторых, он готов эти ключи у себя хранить, а в-третьих, если очень попросить(и передать хеш документа), то может даже и подписать документ усиленной подписью с меткой времени и прочими крипто-прибаутками. Осталось всего-то ничего, этот УЦ у себя завести и вот тут вот интересное: если для работы с УНЭПами вам достаточно просто купить КриптоПро DSS или что-то похожее, то если вы хотите УКЭПы, то вам придется еще и вызвать товарищ-майора и пройти с ним в отделение 10 кругов ада, что бы ваш УЦ стал квалифицированным. Поэтому, УЦ для УКЭПов крайне мало и подавляющее большинство пользуется каким-нибудь Госключем, а УЦ для УНЭПов хоть и побольше, но тоже не в каждой избушке свой, потому что стоят они как крыло самолета, благо на просторах необъятной хватает SaaSных УЦ.
Ну ок, завели/нашли/украли себе УЦ, подписывать-то как? Вот тут все зависит от УЦ и его фичей, например, часто ваша подпись может лежать в некоем контейнере(читай КриптоПро CSP) прямо у вас на компьютере. Когда вам понадобилось что-то подписать, ваш клиент (читай браузер с КриптоПро плагином) вытаскивает подпись и прилепляет ее на документ. Классно-великолепно…а как быть, если у нас подписывает, например, мобильное приложение? Заставлять всех пользователей мобильный КриптоПро ставить? Что бы не хранить ключи локально в специальных криптоконтейнерах мы можем попросить за нас это делать УЦ. В этом случае, когда мы будем что-то подписывать, мы просто расчитаем хеш документа и отправим его в УЦ. УЦ каким-то образом нас поймет кто мы такие, найдет у себя наш ключ и подпишет им документ. Вуаля, мы великолепны! Теперь мы умеем гонять документы по процессам и даже подписывать их подписями. Теперь осталось всего-ничего: научиться их хранить
(продолжение)
и так, электронные подписи.
Как мы с вами выяснили, их бывает 3: простая(ПЭП), усиленная неквалифицированная(УНЭП) и усиленная квалифицированная(УКЭП). Собственно что это такое и почему их 3? Давайте начнем с простого, т.е. с ПЭП. На самом деле, ПЭП — это просто надпись
Ну ок, завели/нашли/украли себе УЦ, подписывать-то как? Вот тут все зависит от УЦ и его фичей, например, часто ваша подпись может лежать в некоем контейнере(читай КриптоПро CSP) прямо у вас на компьютере. Когда вам понадобилось что-то подписать, ваш клиент (читай браузер с КриптоПро плагином) вытаскивает подпись и прилепляет ее на документ. Классно-великолепно…а как быть, если у нас подписывает, например, мобильное приложение? Заставлять всех пользователей мобильный КриптоПро ставить? Что бы не хранить ключи локально в специальных криптоконтейнерах мы можем попросить за нас это делать УЦ. В этом случае, когда мы будем что-то подписывать, мы просто расчитаем хеш документа и отправим его в УЦ. УЦ каким-то образом нас поймет кто мы такие, найдет у себя наш ключ и подпишет им документ. Вуаля, мы великолепны! Теперь мы умеем гонять документы по процессам и даже подписывать их подписями. Теперь осталось всего-ничего: научиться их хранить