Architektura trójwarstwowa

menu icon

Architektura trójwarstwowa

Architektura trójwarstwowa, w której aplikacje są podzielone na trzy logiczne i fizyczne warstwy obliczeniowe, jest dominującą architekturą oprogramowania w tradycyjnych aplikacjach typu klient-serwer.

Czym jest architektura trójwarstwowa?

Architektura trójwarstwowa to dobrze ugruntowana architektura aplikacji, w której aplikacje są porządkowane na trzech logicznych i fizycznych warstwach obliczeniowych. Są to: warstwa prezentacji, czyli interfejs użytkownika; warstwa aplikacji, w której dane są przetwarzane; oraz warstwa danych, w której przechowywane i zarządzane są dane związane z aplikacją.

Ponieważ każda warstwa działa na własnej infrastrukturze, zespoły programistów mogą projektować poszczególne warstwy symultanicznie, a jedna warstwa może być modernizowana i skalowana bez naruszania innych warstw. Stanowi to podstawową zaletę architektury trójwarstwowej.

Architektura trójwarstwowa jest dominującą architekturą dla aplikacji typu klient-serwer. Obecnie większość aplikacji trójwarstwowych modernizuje się za pomocą technologii opracowanych z myślą o chmurze, takich jak kontenery i mikrousługi oraz przenosi się je do chmury.

Szczegółowa analiza trzech warstw

Warstwa prezentacji

Warstwa prezentacji to interfejs użytkownika i warstwa komunikacyjna aplikacji, w której użytkownik końcowy prowadzi interakcję z aplikacją. Głównym zadaniem tego poziomu jest wyświetlanie danych i zbieranie informacji od użytkownika. Jest to warstwa najwyższego poziomu. Może być uruchamiana na przykład w przeglądarce WWW, jako aplikacja biurowa lub graficzny interfejs użytkownika (GUI). Warstwy prezentacji sieciowej są zazwyczaj opracowywane za pomocą języków HTML, CSS i JavaScript. Aplikacje biurowe można pisać w wielu różnych językach w zależności od platformy.

Warstwa aplikacji

Warstwa aplikacji, znana również jako warstwa logiki lub warstwa środkowa, jest sercem aplikacji. To tutaj informacje wcześniej zebrane w warstwie prezentacji są przetwarzane — czasami poprzez zestawienie z innymi informacjami z warstwy danych — za pomocą logiki biznesowej, czyli konkretnego zbioru reguł biznesowych. Warstwa aplikacji może też dodawać, usuwać i modyfikować dane w warstwie danych.

Warstwa aplikacji jest zazwyczaj opracowywana za pomocą języka Python, Java, Perl, PHP lub Ruby i komunikuje się z warstwą danych za pomocą wywołań interfejsu API

Warstwa danych

Warstwa danych, czasami nazywana warstwą bazy danych, warstwą dostępu do danych lub zaplecza, to poziom przechowywania informacji przetwarzanych przez aplikację i zarządzania nimi. Może to być system zarządzania relacyjnymi bazami danych, na przykład PostgreSQL, MySQL, MariaDB, Oracle, DB2, Informix lub Microsoft SQL Server, lub serwer bazodanowy NoSQL, taki jak Cassandra, CouchDB albo MongoDB

W aplikacji trójwarstwowej cała komunikacja jest realizowana w warstwie aplikacji. Warstwa prezentacji i warstwa danych nie mogą komunikować się ze sobą bezpośrednio.

Warstwa fizyczna a warstwa logiczna

W dyskusjach o architekturze trójwarstwowej termin warstwa logiczna (layer) jest często błędnie używany zamiennie z terminem warstwa fizyczna (tier). Dotyczy to na przykład warstwy prezentacji lub warstwy logiki biznesowej. 

Nie jest to jednak to samo. Termin „warstwa logiczna” odnosi się do funkcjonalnego podziału oprogramowania, natomiast termin „warstwa fizyczna” opisuje funkcjonalny podział oprogramowania działającego niezależnie w różnych infrastrukturach. Przykładowo aplikacja Kontakty w telefonie jest aplikacją trójwarstwową w sensie logicznym (three-layer) i jednocześnie jednowarstwową w sensie fizycznym (single-tier), ponieważ wszystkie trzy warstwy działają w jednym telefonie.

Różnica jest ważna, ponieważ warstwy logiczne nie oferują takich samych korzyści jak warstwy fizyczne.

Korzyści wynikające z architektury trójwarstwowej

Podstawową zaletą architektury trójwarstwowej jest logiczne i fizyczne rozdzielenie funkcji. Każda warstwa może działać w różnych systemach operacyjnych i na różnych platformach serwera — np. w serwerze sieciowym, serwerze aplikacji, serwerze bazy danych — które najbardziej pasują do wymogów funkcjonalnych. Każda warstwa działa na co najmniej jednym dedykowanym serwerze fizycznym lub wirtualnym, dzięki czemu usługi każdej warstwy można dostosowywać i optymalizować bez wpływu na pozostałe warstwy. 

Inne korzyści (w porównaniu do architektury jednowarstwowej lub dwuwarstwowej) obejmują:

  • Szybsze programowanie: ponieważ poszczególne warstwy mogą być projektowane symultanicznie przez różne zespoły, organizacja może wprowadzić aplikację na rynek szybciej, a programiści mogą używać najnowszych języków i narzędzi dostosowanych do każdej warstwy.
  • Zoptymalizowaną skalowalność: w miarę potrzeby każdą warstwę fizyczną można skalować niezależnie od innych.
  • Większą niezawodność: awaria jednej warstwy w mniejszym stopniu wpływa na dostępność lub wydajność innych warstw.
  • Wyższe bezpieczeństwo: warstwa prezentacji oraz warstwa danych nie mogą komunikować się ze sobą bezpośrednio, dlatego dobrze zaprojektowana warstwa aplikacji może funkcjonować jako rodzaj wewnętrznego firewalla, który zapobiega wstrzykiwaniu kodu SQL oraz innym nieuczciwym działaniom.

Aplikacja trójwarstwowa w programowaniu aplikacji WWW

W przypadku programowania aplikacji WWW warstwy mają inne nazwy, ale pełnią podobne funkcje:

  • Serwer WWW stanowi warstwę prezentacji i udostępnia interfejs użytkownika. Zazwyczaj jest to strona lub witryna, na przykład e-handlowa, na której użytkownik dodaje produkty do koszyka, podaje dane płatnicze lub zakłada konto. Treść może być statyczna lub dynamiczna i jest zazwyczaj opracowywana za pomocą języków HTML, CSS oraz Javascript.
  • Serwer aplikacji odpowiada środkowej warstwie, w której na zasadzie logiki biznesowej przetwarzane są dane wejściowe użytkownika. Jeśli pozostaniemy przy przykładzie e-handlu, będzie to warstwa, która przeszukuje bazę danych magazynu, uzyskując informacje na temat dostępności produktu i dodając informacje do profilu klienta. Warstwa ta jest często projektowana za pomocą języków Python, Ruby lub PHP i działa na takich platformach jak Django, Rails, Symphony czy ASP.NET.
  • Serwer bazy danych to warstwa danych lub zaplecza aplikacji WWW. Działa w oparciu o oprogramowanie do zarządzania bazami danych, takie jak MySQL, Oracle, DB2 lub PostgreSQL.

Inne architektury wielowarstwowe

Chociaż architektura trójwarstwowa to zdecydowanie najczęściej stosowana architektura wielowarstwowa, istnieją też inne rodzaje architektur, które można napotkać podczas pracy i badań.

Architektura dwuwarstwowa 

Architektura dwuwarstwowa jest oryginalną architekturą klient-serwer, zbudowaną z warstwy prezentacji i warstwy danych. Logika biznesowa jest osadzona w warstwie prezentacji, warstwie danych lub w obu tych obszarach. W architekturze dwuwarstwowej warstwa prezentacji — a w efekcie użytkownik końcowy — ma bezpośredni dostęp do warstwy danych, a zakres logiki biznesowej jest często ograniczony. Przykładem aplikacji dwuwarstwowej jest prosta aplikacja do zarządzania kontaktami, w której użytkownicy mogą wprowadzać i pozyskiwać dane do kontaktu. 

Architektura N-warstw

Architektura N-warstw — zwana również architekturą wielowarstwową — to każda architektura aplikacji z ponad jedną warstwą. Aplikacje z ponad trzema warstwami stanowią rzadkość, ponieważ dodatkowe warstwy oferują dużo mniej korzyści i sprawiają, że aplikacje są wolniejsze, trudniejsze do zarządzania i droższe w obsłudze. W efekcie architektura n-warstwowa i wielowarstwowa to zazwyczaj synonimy architektury trójwarstwowej.

Architektura trójwarstwowa i IBM Cloud

IBM Cloud oferuje produkty i usługi, które pomagają modernizować starsze aplikacje trójwarstwowe i przygotować je do wdrożenia w chmurze.

Wykonaj pierwszy krok:

  • Potrzebujesz pomocy ze strategią, procesami i funkcjami? A może chcesz zyskać dostęp do pełnej gamy usług? Przekonaj się, jak IBM pomaga modernizować aplikacje.
  • Zacznij korzystać z oprogramowania pośredniego, które może działać w dowolnej chmurze — dostępnego w ramach rozwiązań IBM Cloud Paks.
  • Łatwo przenoś istniejące obciążenia VMWare do chmury publicznej z pomocą rozwiązań IBM Cloud for VMware.
  • Planuj i przeprowadzaj strategie modernizacji aplikacji w ramach bieżącej transformacji cyfrowej, korzystając z usług modernizowania aplikacji od IBM.

Już dzisiaj załóż konto w IBM Cloud.