По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Создание единого устройства обработки пакетов - маршрутизатор (или коммутатор уровня 3, который теперь обычно называют просто коммутатором), являющийся наиболее распространенным примером, был до этого момента в центре внимания. Пришло время соединить маршрутизаторы вместе. Рассмотрим сеть на рисунке 1. Приложение, работающее на хосте A, должно получить некоторую информацию от процесса, запущенного на F. Устройства B, C, D и E, конечно же, являются обработчиками пакетов (маршрутизаторами). Для пересылки пакетов между хостами A и F маршрутизатор B будет вызван для пересылки пакетов на F, даже если он не подключен к F. аналогично маршрутизаторам C и D потребуется пересылать пакеты как A, так и F, даже если они не подключены ни к одному из этих хостов. В том разделе рассматривается следующий вопрос: Как сетевые устройства создают таблицы, необходимые для пересылки пакетов по свободным от петель путям в сети? Ответ гораздо сложнее, чем может показаться на первый взгляд, поскольку на самом деле в нем содержится несколько проблем: Как устройства узнают о топологии сети, какие каналы связи подключены к каким устройствам и назначениям. Как плоскости управления принимают эту информацию и создают в сети пути без петель? Как плоскости управления обнаруживают изменения в сети и реагируют на них? Каким образом уровни управления масштабируются для удовлетворения потребностей крупномасштабных сетей? Какие политики реализованы на уровне управления и как? Все эти проблемы будут рассмотрены далее. Обнаружение топологии Сетевые диаграммы обычно показывают всего несколько типов устройств, включая маршрутизаторы, коммутаторы, системы, подключенные к сети (различные типы хостов) и различные типы устройств (например, межсетевые экраны). Они часто связаны между собой каналами, представленными в виде линий. Пример представлен на рисунке 2. Сетевые диаграммы, как и многие другие формы абстракции, скрывают много информации, чтобы сделать встроенную информацию более доступной. Во-первых, сетевые диаграммы обычно находятся где-то между логическим и физическим представлением сети. Такие диаграммы обычно не показывают каждое физическое соединение в сети. Например, сетевая диаграмма может показывать связку каналов как одну линию связи или один физический провод, который был мультиплексирован как несколько логических каналов (например, Ethernet или какой-либо другой канал широковещательной передачи, который представляет собой один физический канал, используемый несколькими устройства для связи). Примечание В сетевой инженерии часто возникает некоторая путаница с термином мультиплексирование. Многие инженеры склонны рассматривать совместное использование двух виртуальных каналов как единственную форму сетевого мультиплексирования. Однако всякий раз, когда есть несколько устройств, совместно использующих одну линию связи, ситуация, в конечном счете требующая некоторой формы адресации, временного разделения трафика или частотного разделения трафика, используется мультиплексирование. Виртуализацию можно рассматривать как второй уровень мультиплексирования или мультиплексирование поверх мультиплексирования. Во-вторых, сетевые схемы часто не учитывают логическую сложность сервисов. Однако плоскость управления не маскирует такого рода сложности. Вместо этого плоскость управления должна собирать информацию о сети локально и с других плоскостей управления, объявлять ее другим устройствам, на которых работает плоскость управления, и создавать набор таблиц, которые плоскость данных может использовать для пересылки трафика через каждое устройство в сети от источника к месту назначения. В этой статье мы рассмотрим проблему: Как плоскость управления узнает о сети? Этот вопрос можно разбить на несколько частей: О чем пытается узнать плоскость управления? Или, возможно, каковы компоненты топологии сети? Как плоскость управления узнает об устройствах, подключенных к сети? Какие основные классификации используются при описании объявления информации о сети? Узлы сети, границы и достижимый пункт назначения. Первая проблема, которую необходимо решить, на самом деле является мета-вопросом: какие виды информации должна изучать и распространять плоскость управления, чтобы строить пути без петель в сети? Однако небольшое предупреждение по поводу следующего материала статьи: сетевые термины трудно однозначно определить, поскольку отдельные термины часто используются для описания множества "вещей" в сети, в зависимости от контекста, в котором они используются. Узел Узел либо обрабатывает пакеты (включая пересылку пакетов), либо отправляет пакеты, либо принимает пакеты в сети. Термин взят из теории графов, где их также можно назвать вершинами, хотя этот термин более широко применяется в сетевой инженерии. В сети есть несколько типов узлов, в том числе: Транзитный узел: любое устройство, предназначенное для приема пакетов на одном интерфейсе, их обработки и отправки на другом интерфейсе. Примерами транзитных узлов являются маршрутизаторы и коммутаторы. Их часто просто называют узлами, так они будут именоваться здесь в статье, а не транзитными узлами. Конечный узел: также называется конечной системой или хостом: любое устройство, предназначенное для запуска приложений, которые генерируют и/или принимают пакеты от одного или нескольких интерфейсов. Это сетевые источники и приемники, чаще всего эти узлы на самом деле называются хостами, а не конечными узлами, чтобы отличать их от shorthand узлов, что обычно означает транзитный узел. В этих двух определениях есть много очевидных дыр. Как должно называться устройство, которое принимает пакет на одном интерфейсе, завершает соединение в локальном процессе или приложении, генерирует новый пакет, а затем передает этот новый пакет из другого интерфейса? Проблема усложняется, если информация, содержащаяся в двух пакетах, примерно одинакова, как в случае с прокси-сервером или каким-либо другим подобным устройством. В этих случаях полезно классифицировать устройство как конечное или узел в определенном контексте, в зависимости от роли, которую оно играет по отношению к другим устройствам в контексте. Например, с точки зрения хоста прокси-сервер действует как устройство сетевой переадресации, поскольку работа прокси-сервера (в некоторой степени) прозрачна для хоста. Однако с точки зрения соседнего узла прокси-серверы являются хостами, поскольку они завершают потоки трафика и (как правило) участвуют в плоскости управления так же, как и хост. Граница (край) Граница - это любое соединение между двумя сетевыми устройствами, через которое пересылаются пакеты. Номинальный случай - соединение точка-точка (point-to-point), соединяющее два маршрутизатора, но это не единственный случай. В теории графов ребро соединяет ровно два узла. В сетевой инженерии существуют понятия мультиплексированных, многоточечных и других типов мультиплексированных каналов. Чаще всего они моделируются как набор соединений point-to-point, особенно при построении набора маршрутов без петель в сети. Однако на сетевых диаграммах мультиплексированные каналы часто изображаются как одна линия с несколькими присоединенными узлами. Достижимый пункт назначения Достижимый пункт назначения может описывать один узел или службу, или набор узлов или служб, доступных через сеть. Номинальным примером достижимого пункта назначения является либо хост, либо набор хостов в подсети, но важно помнить, что этот термин может также описывать службу в некоторых контекстах, таких как конкретный процесс, запущенный на одном устройстве, или множество вариантов службы, доступных на нескольких устройствах. Рисунок 3 иллюстрирует это. В сети, показанной на рисунке 3, достижимые пункты назначения могут включать: Любой из отдельных хостов, например A, D, F, G и H Любой из отдельных узлов, например B, C или E Служба или процесс, работающий на одном хосте, например S2. Служба или процесс, работающий на нескольких хостах, например S1. Набор устройств, подключенных к одному физическому каналу или границе, например F, G и H Этот последний достижимый пункт назначения также представлен как интерфейс на конкретном канале или на границе сети. Следовательно, маршрутизатор E может иметь несколько достижимых пунктов назначения, включая: Интерфейс на линии, соединяющей маршрутизатор E с C Интерфейс на линии, соединяющей маршрутизатор E с B Интерфейс на линии, соединяющей маршрутизатор E с хостами F, G и H Сеть, представляющая достижимость для хостов F, G и H Любое количество внутренних служб, которые могут быть объявлены как отдельные адреса, порты или номера протоколов Любое количество внутренних адресов, присоединенных к виртуальным каналам связи, которые не существуют в физической сети, но могут использоваться для представления внутреннего состояния устройства (не показано на рисунке3) Таким образом, концепция достижимого пункта назначения может означать множество разных вещей в зависимости от контекста. В большинстве сетей достижимый пункт назначения - это либо одиночный хост, одиночный канал (и хосты, подключенные к нему), либо набор каналов (и хосты, прикрепленные к этим каналам), объединенные в один достижимый пункт назначения. Теперь, почитайте материал про топологию сетей.
img
О переходе в IT профессию не думал разве только тот, кто в IT сфере уже работает. Высокие зарплаты, постоянная удаленка, куча плюшек и битвы HR-ов за самый оригинальный подкат к айтишнику на LinkedIn. Насмотревшись на фотографии и рассказы друзей айтишников, все это заставляет многих подумать: а не пора ли сменить профессию? Если задумались - значит пора. А мы, в свою очередь, поможем разобраться, какие бывают айтишники и как вам войти в айти. Говоря про айтишников, многие представляют себе программистов, их еще называют девелоперы (от английского developer) или разработчики. Но поверьте, айти не заканчивается на них, а скорее только начинается. Разновидностей программистов - как товаров на Amazon: frontend, backend, full-stack, веб-программисты, мобильные и десктоп разработчики, DevOps программисты и прочие. Особенно важно разобраться с тремя первыми - фронт, бэк, и фуллстэк. Понять разницу между фронтэнд и бэкэнд девелопером - ну очень просто. Фронтенд пишет все, что происходит в видимой зоне, а бэкенд - за видимой зоной. Сейчас разберемся на конкретных примерах: Netflix: красивую картинку с палитрой интересных киношек, кнопки, слайдеры и все, что вы видите в видимой зоне - сделали фронты. Алгоритмы рекомендаций, авторизацию, списание денег с вашей карты, то есть биллинг, и другие компоненты на фоне - сделали бэкенд девелоперы. Когда в следующий раз будете реветь от рекомендаций мелодрамы, которая ранила вас прямо в сердечко - это бэки постарались. Amazon: карточки товаров, категории, навигация, отзывы и прочая визуальщина - фронты. Передача на на фронт актуальных цен товаров, калькуляция условий доставки в ваш регион мешка с леденцами со вкусом корицы, механизм умного поиска - бэки. А еще есть фуллстэк программисты - это те, кто умеют и бэк и фронт. В среднем, чтобы стать фронтом, надо поучить HTML, CSS, JavaScript - это база, с которой уже можно верстать сайты. Но технологии не стоят на месте и сейчас зачастую обычного знания JavaScript бывает недостаточно, поскольку во многих местах используются различные фреймворки расширяющие функционал языка, такие как React, Angular или Vue. Ну а поскольку разработчик всегда работает с командой, то нужно знать как работать с системами управления версиями, зачастую это Git и уметь работать с API, чтобы найти общий язык с бэкэнд. Бэкенд девелоперу, очевидно, нужно знать один из языков программирования для бэка. Какой? Вам нужно определиться самому. Посмотрите вакансии, которые вас интересуют и поймите, что нужно в компании вашей мечты. Самые известные и популярные языки это Java, Python, PHP, С, С#, С++, Ruby и Go. Их очень много, но не стоит отчаиваться глядя на их количество - изучив один язык и поняв принципы программирования, вы сможете легко перейти на другой язык. Еще можно выделить мобильных разработчиков, которые делают приложения для iOS и Android - им нужно подучить Objective-C и Swift для iOS и Kotlin или Java для андроида. Поскольку разработчики пишут код не в вакууме, а взаимодействуют с различными системами, то вам нужно знать про SQL и принципы работы с базами данных. И очень важно уметь работать с NoSQL - нереляционными базами. Если хочешь заниматься только базами то для этого даже есть отдельная профессия - администратор баз данных (DBA). Если вы будете заниматься веб разработкой, то нужно знать про принципы работы HTTP и про модель OSI, про веб сервера, как минимум Apache и Nginx, как работают API, аутентификация, основы безопасности. Уф, ну кажется этого должно хватить для начала. Идем дальше - тестировщики, а они же QA (Quality Assurance). Тестирование бывает ручное, а бывает автоматическое. Автоматизаторы, безусловно, ближе к программистам - им нужно разрабатывать алгоритмы, знать процессы разработки ПО и его тестирования. В ручном тестировании - все немного попроще. Зачастую тестирование становится отправной точкой для карьеры будущего айтишника. Входной билет сюда чуть ниже, войти проще. Нужно знать классификацию тестирования, методы и инструменты, уметь создавать сценарии тестирования. Нужно базово понимать протокол HTTP и модель OSI, немного HTML и CSS. Хорошо бы уметь работать с командной строкой, знать SQL, принципы API чтобы гонять запросы в каком-нибудь клиенте типа Postman, знать инструменты автоматического тестирования, такие как Selenium или Sahi. Уф, кажется, основные профессии, связанные напрямую с разработкой софта мы проговорили. Теперь, друг, давай разберемся с не менее крутой частью IT, где ощущается острейший дефицит кадров - это инфраструктурные айтишники. Итак, сетевые инженеры - без них не “взлетит” ни одно приложение, сервис, сайт, платформа, да что угодно! Сетевики настраивают маршрутизацию трафика, управляют сетью и гарантируют взаимодействие айти - инфраструктуры с внешними сетями. Открывая Tinder, каждый свайп вправо генерирует запрос к серверам, который прилетает в дата - центр тиндера и маршрутизируется на нужный сервер - это как раз сетевик постарался. Сетевик должен знать основы сетевых технологий - классической школой в этом плане являются технологии Cisco (а также Huawei, Juniper и Mikrotik), надо знать технологии виртуализации, уметь работать с операционными системами Linux и Windows Server, иметь представления о кибербезопасности и уметь читать и базово говорить по английски. И конечно безопасники - про их востребованность сейчас, вы наверняка догадываетесь. Среди них выделяют: Инженеров - эти ребята делают безопасной сеть, настраивают фаерволы, антивирусы, анти-DDoS, прокси и прочие средства защиты Аналитиков - которые выявляют инциденты, мониторят и находят вредоносную активность, расследуют взломы, утечки и другие неприятные моменты Пентестеров - это HackerMan’ы по найму. Ага, эти ребята занимаются легитимным взломом, чтобы потом вы могли закрыть все дырки обнаруженные ими и не стать жертвой настоящих хакеров Консультантов - знают все законы и требования в ИБ, помогут в получении нужных бумаг, чтобы не попасть на штрафники от всяких регуляторов Appsec, Cloudsec - занимаются безопасностью приложений и облачной инфраструктуры В компаниях постоянно идут эпические битвы между айтишниками и ИБшниками, потому что последние, довольно параноидальные ребята. Они стараются максимально обезопасить инфраструктуру и её активы, вводя для этого различные правила. Например - хочешь подключиться к корпоративному VPN? Сначала пройди двухфакторную аутентификацию! Долго? Зато безопасно. Для безопасника будет полезно понимать основы сетевой безопасности, а также операционных систем, знать что такое триада CIA и принцип Defense in Depth, ну и конечно же - знать какие существуют методы атак, вредоносного ПО и прочих ИБ угроз. Так же есть более узкопрофильные направления - Linux или Windows администратор, специалист по IP - телефонии, администратор баз данных, SRE инженер и многие другие! Ну и конечно можно наоборот выделить широкопрофильного системного администратора - специалиста, который настраивает и поддерживает ИТ инфраструктуру компании и должен знать много вещей из разных областей. Так, кажется большинство популярных технических направлений мы проговорили. Теперь давайте прыгнем к менеджерам, тем, кто управляет ИТ проектами и продуктами с точки зрения бизнеса. Вообще, скажем так, быть техно - коммерческим специалистом в айти отрасли ну крайне выгодно: комбинируя хороший технический бэкграунд, знание бизнес специфики, добавив высокие коммуникативные навыки и надев белую рубашку вы автоматически получаете высочайшую зарплату, корпоративную тачку и прочие радости. Ладно, шутка, давайте разбираться. Продакт менеджеры (они же продакты) - эти ребята отвечают за коммерческий успех продукта и реализацию бизнес требований. Продакт знает такие фреймворки как Scrum и Agile, должен знать цикл разработки программного обеспечения, отвечать за список задач на разработку, который также называют “бэклог” и обязательно уметь говорить на одном языке с разработчиками, топ-менеджментом, продавцами, маркетингом и другими подразделениями компании. Пожалуй, продакт должен знать такие инструменты как JIRA, Trello, Miro, Slack и Wrike, и уметь анализировать метрики успеха продукта. Если хотите двигаться в это направление, рекомендуем получить интересующие вас технические навыки, а потом двигать в бизнес плоскость - почитать Lean Startup, “Спросите маму” Роберта Фитцпатрика и про Scrum у Джеффа Сазерленда. Эти книги помогут вам базово сориентироваться в пространстве и получить базовое представление. Проектные менеджеры, они же delivery менеджеры - они отвечают за реализацию проекта - контроль сроков, доставку функций продукта в продакшн, то есть в реальную среду работы продукта, отвечают за организацию человеческих ресурсов и планирование, в том числе релизов. Из хард скиллов вам надо знать что такое "Диаграмма Ганта", изучите свод знаний по управлению проектами PMBOK, который разработан американским Институтом управления проектами (PMI), знать гибкие методологии и уметь работать с теми же инструментами, что и продакту (JIRA, Trello, Miro, Slack и Wrike). А еще есть UX - дизайнеры, продуктовые дизайнеры, аналитики, но они имеют менее технический уклон, чем продакты и проджекты. Познать востреброванные айти профессии, получая знания в легкой и дружелюбной форме можно с помощью нашей платформы доступного айти образования Merion Academy: ознакомиться со списком курсов и пройти бесплатные вводные уроки можно по этой ссылке.
img
В этой статье мы расскажем про самые популярные и полезные паттерны архитектуры программного обеспечения. Многоуровневая архитектура (n-уровневая) Многоуровневая архитектура является одной из самых распространенных. Ее идея заключается в том, что компоненты с одинаковыми функциями организованы в горизонтальные слои, или уровни. В результате чего каждый уровень выполняет определенную роль в приложении. В таком варианте архитектуры нет ограничения на количество уровней, которое может иметь приложение. При этом здесь также продвигается концепция разграничения полномочий. Многоуровневая архитектура абстрагирует представление о программном обеспечении как о едином целом; предоставляя достаточно информации для понимания ролей каждого уровня и взаимосвязи между ними. Стандартной реализацией такой модели может быть: Пользовательский интерфейс/уровень представления: отображение и запуск пользовательского интерфейса, отправка запросов серверному приложению. Уровень приложений: содержит уровень представления, уровень приложения, уровень предметной области и уровень хранения и управления данными. Уровень предметной области: этот уровень содержит всю логику предметной области, сущности, события и другие типы объектов, которые содержат логику предметной области. Уровень базы данных: это уровень данных, который используется для сохранения данных, которые будут использоваться сервером приложений. Пример: десктоп приложение, электронная коммерция или веб-приложения и т.д. Клиент-сервер Это наипростейшая архитектура, состоящая из сервера и нескольких клиентов. Она представляет собой распределенную структуру, которая распределяет задачи или рабочую нагрузку между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. При такой архитектуре, когда клиент отправляет запрос данных на сервер, сервер принимает этот запрос и отвечает клиенту, предоставляя требуемые данные. Клиенты своими ресурсами не делятся. Пример: электронная почта, обмен документами, банковские операции и т.д. Event-Bus (событийно-ориентированная архитектура) Это распределенная асинхронная архитектура для создания быстро масштабируемых реактивных приложений. Такая архитектура подходит для стека приложений любого уровня, от маленьких до сложных. Основная идея – асинхронная доставка и обработка событий. Эта модель состоит из четырех основных компонентов: Источник события Получатель события Канал Шина событий Источник публикует сообщение в определенный канал на шине событий. Получатель подписывается на определенный канал и получает сообщения, которые публикуются на канале, на который они подписаны. Пример: электронная коммерция, разработка мобильных приложений, службы уведомлений и т.д. Шаблон брокера Этот шаблон можно использовать для структурирования распределенных систем с несвязанными компонентами, взаимодействующими посредством удаленных вызовов служб. Компонент брокер отвечает за координацию обмена данными между компонентами; таких как переадресация запросов, а также передача результатов и исключений. Серверы публикуют свои возможности (услуги и характеристики) брокеру. Клиенты запрашивает услугу у брокера, и затем брокер перенаправляет клиента к подходящей услуге из своего реестра. Пример: ПО брокера сообщений, Apache ActiveMQ, Apache Kafka, RabbitMQ, JBoss Messaging и т.д. Микросервисный шаблон В данной модели службы взаимодействуют с использованием синхронных протоколов, таких как HTTP/REST, или асинхронных протоколов, таких как AMQP (Advanced Message Queuing Protocol - расширенный протокол организации очереди сообщений). Службы можно разрабатывать и разворачивать независимо, и каждая служба будет иметь собственную базу данных. Согласованность данных между службами поддерживается с помощью шаблона Saga (последовательность локальных транзакций). Пример: может быть реализован в различных вариантах использования, особенно в обширном конвейере данных Одноранговая модель (Peer-to-Peer) Здесь, как и в обычной клиент-серверной архитектуре, несколько клиентов взаимодействуют с центральным сервером. Но модель одноранговой сети (Р2Р) состоит из децентралированной сети одноранговых узлов. В этом шаблоне узлы ведут себя и как клиенты, и как серверы. Одноранговые узлы могут функционировать как клиент, запрашивающий услуги у других одноранговых узлов, и как сервер, предоставляющий услуги другим одноранговым узлам. Сети Р2Р распределяют рабочую нагрузку между одноранговыми узлами, и все они вносят и потребляют ресурсы внутри сети без необходимости использования централизованного сервера. Одноранговый узел может динамически менять свою роль с течением времени Пример: файлообменные сети, мультимедийные протоколы PDTP, P2PTV, биткоин, блокчен и т.д. Blackboard (доска объявлений) Данный паттерн полезен при решении задач, для которых не известны детерминированные стратегии решения. Все компоненты имеют доступ к «доске объявлений». Компоненты могут создавать новые объекты данных, которые в последствие будут добавлены на эту доску. Компоненты ищут определенные типы данных на доске и находят их по образцу, совпадающему с существующим источником знаний. Этот шаблон состоит из трех основных компонентов: Доска объявлений: структурированная глобальная память, которая содержит объекты из пространства решений. Источник знаний: специализированные модули с собственным представлением решения Компонент управления: выбирает, настраивает и выполняет модули Пример: быстрое распознавание, идентификация структуры белка, интерпретация сигналов звуколокатора, программы машинного обучения и т.д.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59