<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	 xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>e-commerce &#8211; Nearshore Software Development Company &#8211; IT Outsourcing Services</title>
	<atom:link href="https://nearshore-it.eu/pl/tag/e-commerce/feed/" rel="self" type="application/rss+xml" />
	<link>https://nearshore-it.eu/pl/</link>
	<description>We are Nearshore Software Development Company with 14years of experience in delivering a large scale IT projects in the areas of PHP, JAVA, .NET, BI and MDM.</description>
	<lastBuildDate>Thu, 07 Nov 2024 14:18:14 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://nearshore-it.eu/wp-content/uploads/2023/01/cropped-inetum-favicon-300x300-1-32x32.png</url>
	<title>e-commerce &#8211; Nearshore Software Development Company &#8211; IT Outsourcing Services</title>
	<link>https://nearshore-it.eu/pl/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MongoDB – idealny system bazodanowy dla e-commerce?</title>
		<link>https://nearshore-it.eu/pl/artykuly/mongodb-nosql-w-ecommerce/</link>
					<comments>https://nearshore-it.eu/pl/artykuly/mongodb-nosql-w-ecommerce/#respond</comments>
		
		<dc:creator><![CDATA[Adam Sosinski]]></dc:creator>
		<pubDate>Wed, 12 Jan 2022 12:27:32 +0000</pubDate>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[NoSQL]]></category>
		<guid isPermaLink="false">https://nearshore-it.eu/artykuly/mongodb-nosql-w-ecommerce/</guid>

					<description><![CDATA[Jednym z kluczowych wyzwań dla programistów, architektów oraz managerów zaangażowanych w projekty e-commerce jest wybór odpowiedniej bazy do przechowywania danych reprezentujących towar czy usługę. Analogicznie do tego jak fizycznie towary przechowywane są w magazynach, tak w świecie wirtualnym informacje o nich przechowywane są w bazach danych. Wybierając system do zarządzania bazą danych (DBMS) na potrzeby e-commerce, trzeba zwrócić uwagę na kilka kwestii: elastyczność, wysoką dostępność, niezawodność, obsługiwanie wielu zapytań oraz  aktualność danych. Jednym z popularnych systemów odpowiadających na te potrzeby jest MongoDB, którego możliwości omówię w tym artykule.]]></description>
										<content:encoded><![CDATA[
<div class="table-of-contents">
    <p class="title">Idź do: </p>
    <ol>
                    <li><a href="#E-commerce-to-nie-tylko-sklepy-internetowe">1.  E-commerce to nie tylko sklepy internetowe</a></li>
                    <li><a href="#Wyzwania-systemów-bazodanowych-w-e-commerce">2.  Wyzwania systemów bazodanowych w e-commerce</a></li>
                    <li><a href="#Co-wybrać:-nierelacyjne-bazy-danych-czy-relacyjne-bazy-danych?">3.  Co wybrać: nierelacyjne bazy danych czy relacyjne bazy danych?</a></li>
                    <li><a href="#Czym-jest-MongoDB?">4.  Czym jest MongoDB?</a></li>
                    <li><a href="#NoSQL-w-e-commerce,-czyli-co-MongoDB-może-zaoferować-branży?">5.  NoSQL w e-commerce, czyli co MongoDB może zaoferować branży?</a></li>
                    <li><a href="#Podsumowanie">6.  Podsumowanie</a></li>
            </ol>
</div>


<h2 class="wp-block-heading" id="E-commerce-to-nie-tylko-sklepy-internetowe">E-commerce to nie tylko sklepy internetowe</h2>



<p><a href="https://nearshore-it.eu/pl/artykuly/najwazniejsze-trendy-w-e-commerce-w-2021-roku">E-commerce</a>&nbsp;to nic innego jak handel przeniesiony do Internetu. Przy czym mówimy tu o samej transakcji kupna-sprzedaży, gdyż płatność i dostawa mogą być realizowane w sieci, jak i poza nią. Najbardziej znanym i przez część osób utożsamianym z tym pojęciem rodzajem handlu są sklepy internetowe. Należy jednak nadmienić, że poza e-sklepami możemy jeszcze wyróżnić serwisy aukcyjne, e-kantory, bankowość elektroniczną czy platformy bukmacherskie.</p>



<h2 class="wp-block-heading" id="Wyzwania-systemów-bazodanowych-w-e-commerce">Wyzwania systemów bazodanowych w e-commerce</h2>



<p>System bazodanowy w e-commerce to narzędzie do zadań specjalnych.</p>



<p>Dobrze skonfigurowany system bazodanowy powinien:</p>



<ul class="wp-block-list">
<li>zagwarantować dostępność danych 24/7</li>



<li>utrzymać szybkość odpytywania w okresie wzrostu użycia</li>



<li>zapisywać ogromne ilości danych</li>



<li>informować w sposób dynamiczny i ciągły o zmianach (np. dostępności danego produktu)</li>
</ul>



<p>W tym celu firmy e-commerce powinny postawić na skalowalność bazy danych. To istotne zwłaszcza w czasie peaków w e-commerce, takich jak Black Friday, Cyber Monday i związaną z nimi zwiększoną liczbą zapytań. </p>



<p><strong>Przeczytaj także: </strong><a href="https://nearshore-it.eu/pl/artykuly/5-najpopularniejszych-narzedzi-do-analizy-danych-biznesowych">5 najpopularniejszych narzędzi do analizy danych biznesowych</a></p>



<h2 class="wp-block-heading" id="Co-wybrać:-nierelacyjne-bazy-danych-czy-relacyjne-bazy-danych?">Co wybrać: nierelacyjne bazy danych czy relacyjne bazy danych?</h2>



<p>Zastanówmy się trochę głębiej nad przechowywaniem danych dla usług e-commerce. Do wyboru mamy kilka typów baz danych, przy czym najbardziej znane są relacyjne (SQL) i nierelacyjne (NoSQL). Przyjrzyjmy się różnicom między nimi. Żeby być bardziej precyzyjnym, SQL jest to Structured Query Language, czyli język do pozyskiwania danych z bazy relacyjnej. Przyjęło się jednak tego typu bazy danych nazywać „bazami SQL”, zatem tej nazwy będę używał przy porównywaniu. Upraszcza to też zapamiętanie nazwy drugiego rodzaju baz, czyli NoSQL, które często określa się po prostu jako „nie SQL”.</p>



<p>Przechodząc do różnic, możemy wyróżnić 5 podstawowych, które zebrałem w tabeli poniżej:</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>SQL</strong></td><td><strong>NoSQL</strong></td></tr><tr><td>jasno zdefiniowane relacje między danymi</td><td>brak relacji, dane są luźno powiązane</td></tr><tr><td>dane przechowywane w tabelach</td><td>dane przechowywane w dokumentach, grafach, jako tzw. klucz-wartość</td></tr><tr><td>zdefiniowany schemat</td><td>dynamiczny schemat, nieuporządkowane dane</td></tr><tr><td>preferowany przy operacjach na wielu wierszach</td><td>preferowany, gdy szybkość pozyskania danych jest istotna</td></tr><tr><td>skalowalne wertykalnie</td><td>skalowalne horyzontalnie</td></tr></tbody></table></figure>



<p></p>



<p>Jak widać, bazy NoSQL idealnie wpisują się w wymagania i potrzeby rynku e-commerce w kontekście dostępności i przechowywania danych. Obecnie najpopularniejszym systemem bazodanowym tego typu jest MongoDB.</p>



<h2 class="wp-block-heading" id="Czym-jest-MongoDB?">Czym jest MongoDB?</h2>



<p>MongoDB to dokumentowa baza danych zaprojektowana z myślą o łatwości tworzenia i skalowania. Dokumenty są tworzone i przechowywane w formacie <strong>BSON, czyli Binary JSON. </strong>Zastosowanie JSON oznacza, że ​​bardzo łatwo jest przekonwertować zapytania i wyniki do formatu, który rozumie kod frontendowy, w którym napisana jest aplikacja e-commerce. Jest też on bardziej czytelny dla człowieka. To rozwiązanie NoSQL obejmuje hierarchiczność, automatyczne fragmentowanie i wbudowaną replikację dla lepszej skalowalności i wysokiej dostępności.</p>



<p>Mając już obraz tego, jakie są główne wyzwania w e-commerce, oraz upewniając się, że MongoDB to dobry wybór w kontekście przechowywania danych, możemy zastanowić się nad odpowiedzią na pytanie: <strong>co MongoDB może zaoferować branży e-commerce?</strong></p>



<h2 class="wp-block-heading" id="NoSQL-w-e-commerce,-czyli-co-MongoDB-może-zaoferować-branży?">NoSQL w e-commerce, czyli co MongoDB może zaoferować branży?</h2>



<h3 class="wp-block-heading" id="dynamiczne-schematy">Dynamiczne schematy</h3>



<p>Dzięki dynamicznym schematom dokumenty w kolekcji nie muszą posiadać tych samych pól, a i dane pole może mieć różne typy w zależności od dokumentu. Zwiększa to elastyczność mapowania na encje czy obiekty. Praktyka pokazuje jednak, że struktura dokumentów wewnątrz kolekcji jest podobna. Aby to zagwarantować, MongoDB wprowadziło możliwość ustawienia reguł walidacyjnych na kolekcję.</p>



<h3 class="wp-block-heading" id="latwa-hierarchizacja-danych">Łatwa hierarchizacja danych</h3>



<p>Zastosowanie formatu JSON pozwala na łatwą hierarchizację danych. Możemy to zrobić poprzez osadzenie jednego dokumentu wewnątrz drugiego lub poprzez przekazanie referencji. Użycie jednej bądź drugiej metody powinno być rozpatrywane indywidualnie dla każdej kolekcji. Zalecane jest stosowanie osadzenia, ponieważ pozwala to pozyskać dane w wyniku pojedynczego zapytania, co zwiększa wydajność systemu. Referencje warto rozważyć dla bardziej skomplikowanych reprezentacji hierarchii bądź w sytuacji, kiedy korzyści z zagnieżdżenia nie przeważają nad skutkami duplikacji danych (takimi jak np. potrzeba monitorowania zmian przy podmianie danych) </p>



<h3 class="wp-block-heading" id="replikacja">Replikacja</h3>



<p>MongoDB używa konceptu nazwanego <strong>Replica Set,</strong> czyli zestawu node’ów zawierających te same dane. Umożliwia to replikację danych, której celem jest <strong>zwiększenie dostępności oraz zabezpieczenie się przed awariami serwerów bazodanowych.</strong> Dobrze zaprojektowana architektura pozwala również na szybszy dostęp do danych.</p>



<p>Kluczowe założenia i mechanizmy replikacji omówimy na podstawie poniższego schematu:</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image is-style-default">
<figure class="aligncenter size-full"><img decoding="async" src="https://nearshore-it.eu/wp-content/uploads/2024/09/JPro_2022.01.12_graphic1_MongoDB.png" alt="nosql w ecommerce" class="wp-image-59525" title="MongoDB – idealny system bazodanowy dla e-commerce? 1"></figure></div>


<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p></p>



<p>Zestaw replik składa się z jednego node’a, tzw. członka głównego (<em>Primary</em>), oraz członków drugorzędnych (<em>Secondary</em>). Istnieje też specjalny członek takiego zestawu, sędzia (<em>Arbiter</em>), który nie posiada kopii danych, ale służy do wybierania zastępcy w przypadku niedostępności głównego serwera.</p>



<p>Operacje zapisu wykonywane są wyłącznie na głównej instancji, z której później mechanizm wbudowany MongoDB kopiuje dane na pozostałe. Operacje odczytu domyślnie również przechodzą przez wiodącą instancję, ale istnieje możliwość skonfigurowania node’ów, tak aby to poboczne serwery służyły do obsługi zapytań, przy czym może to się wiązać z wystąpieniem tzw. eventual-consistency, czyli z opóźnioną aktualnością danych.</p>



<p>Istotny dla całej koncepcji replikacji jest <strong>mechanizm taktowania (<em>heartbeat</em>).</strong> Każdy z node’ów (<em>members</em>) co 2 sekundy odpytuje pozostałe w celu sprawdzenia ich dostępności. W przypadku gdy serwer główny jest niedostępny, następuje wybór nowego. Proces ten polega na wybraniu spośród pozostałych instancji tej, która ma ustawiony najwyższy priorytet. Dokumentacja stwierdza, że replika może posiadać do 50 node’ów, przy czym tylko 7 z nich może brać udział w wyborze (<em>voting</em>), i to spośród nich wybierany jest następca. Pozostałe serwery, nazwane <em>Non-Voting members,</em> muszą mieć właściwości <em>votes</em> i <em>priority</em> ustawione na 0. Zaleca się, aby liczba instancji z możliwością głosowania była nieparzysta, stąd też minimalna liczba &nbsp;node’ów w replice to 3.</p>



<h3 class="wp-block-heading" id="fragmentacja">Fragmentacja</h3>



<p>Fragmentacja polega na podzieleniu zestawu danych na mniejsze części, dzięki czemu możemy skalować horyzontalnie, praktycznie w nieskończoność. MongoDB do obsługi fragmentacji używa klastra, który składa się z następujących elementów:</p>



<ul class="wp-block-list">
<li><em>Shard</em>, czyli zestawu replik, który zawiera część kolekcji (<em>Chunk</em>)</li>



<li>Router, który działa trochę jak load balancer i na podstawie konfiguracji przekazuje polecenia do odpowiedniej podkolekcji, żeby zrównoważyć obciążenie</li>



<li><em>Config server</em>, przechowujący metadane i konfigurację klastra</li>
</ul>



<p>Zależności pomiędzy komponentami przedstawia poniższy schemat:</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" src="https://nearshore-it.eu/wp-content/uploads/2024/09/JPro_2022.01.12_graphic_MongoDB.png" alt="nosql database real time analysis" class="wp-image-59543" title="MongoDB – idealny system bazodanowy dla e-commerce? 2"></figure></div>


<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Istotne w przypadku fragmentacji danych jest dobranie odpowiedniego klucza oraz strategii.</p>



<p>Wybierając pole dokumentu, którego chcemy użyć jako klucza, powinniśmy rozważyć:</p>



<ul class="wp-block-list">
<li><strong>Kardynalność </strong>– czyli na jak wiele elementów możemy podzielić kolekcję względem klucza</li>



<li><strong>Powtarzalność </strong>– czy któraś wartość nie pojawia się zdecydowanie częściej niż pozostałe</li>



<li><strong>Jednostajność </strong>– czy nowe wartości klucza nie są wzrastające / malejące w sposób liniowy</li>



<li><strong>Częstotliwość zapytań</strong> – klucz powinien być wykorzystywany w najczęstszych zapytaniach</li>
</ul>



<p><strong>Jeżeli chodzi o strategie, mamy do dyspozycji dwie:</strong></p>



<h3 class="wp-block-heading" id="hashed-sharding">Hashed Sharding</h3>



<p>Przy tej strategii MongoDB automatycznie generuje <em>Hash</em> z wartości pól kluczy. Sprawdza się ona w przypadku gdy wartości klucza zmieniają się jednostajnie. Zastosowanie hasha zwiększa równomierne rozdzielenie dokumentów pomiędzy udziałami (<em>Shards</em>). Minusem jest to, że w przypadku zapytań o dany zakres mało prawdopodobne jest, iż wszystkie dokumenty będą w jednym udziale. Skutkuje to odpytywaniem wszystkich części kolekcji (<em>chunks</em>), ponieważ router nie jest w stanie jednoznacznie określić, w którym udziale znajdują się szukane dokumenty.</p>



<h3 class="wp-block-heading" id="ranged-sharding">Ranged Sharding</h3>



<p>Każdy z udziałów przechowuje części kolekcji w danym zakresie wartości klucza. Strategia ta sprawdza się<ins>,</ins> kiedy zbiór wartości dla klucza jest duży, ale powtarzalność każdej z nich jest mała. Ogromną zaletą jest możliwość ukierunkowania zapytania na konkretny udział bądź &nbsp;kolekcję, co znacząco wpływa na szybkość odpytywania.</p>



<p>Dzieleniem na części oraz ich rozmieszczaniem zajmuje się wbudowany mechanizm MongoDB, który dba o równe ich rozdystrybuowanie oraz stara się utrzymać zbliżoną wielkość każdego z nich. Decydując się na fragmentację, należy pamiętać, że MongoDB nie oferuje metody scalenia danych, a jedynie możliwość ponownej fragmentacji po innym kluczu.</p>



<h3 class="wp-block-heading" id="strumienie-zmian">Strumienie zmian</h3>



<p>Od wersji 3.6 MongoDB pozwala nasłuchiwać zmian w wybranej kolekcji, bazie lub całym systemie, z wyjątkiem kolekcji<strong> admin, lokal i config.</strong> Odbywa się to poprzez otwarcie kursora, który pozwala iteracyjnie przechodzić po zdarzeniach związanych z danym zakresem. Ponieważ mechanizm ten używa agregacji, możemy również nasłuchiwać konkretnych zmian czy też modyfikować odebrane notyfikacje. Podstawowym wymaganiem jest użycie zestawu replik, gdyż powiadomienie następuje w momencie zapisu zmiany na większości z tych, które są odpowiedzialne za przechowywanie danych.</p>



<p>Strumienie zmian wykorzystują specjalną, ograniczoną kolekcję <strong>oplog</strong>, która przechowuje informację o operacjach wpływających na aktualny stan danych. Dokumenty w tej kolekcji rotują, oznacza to, że nowy dokument w przypadku osiągnięcia limitu rozmiaru kolekcji powoduje usunięcie najstarszych. Dlatego należy dobrać odpowiedni rozmiar dla tej kolekcji, zależny od częstotliwości występowania zdarzeń, tak aby możliwe było przechwycenie wybranego, zanim zostanie ono usunięte.</p>



<h2 class="wp-block-heading" id="Podsumowanie">Podsumowanie</h2>



<p>Wartość polskiego rynku e-commerce w 2020 r. przekroczyła <strong>100 mld zł,</strong> jednocześnie według raportu „E-commerce w Polsce 2021”, opracowanego przez Gemius dla e-Commerce Polska, <strong>aż 77% Polaków deklaruje, że kupuje online.</strong> Wskazuje to wyraźny, utrzymujący się już od dłuższego czasu trend przenoszenia się handlu do Internetu. Według prognoz tak dynamiczny rozwój e-handlu w Polsce utrzyma się jeszcze przez kilka najbliższych lat.</p>



<p>Klienci mają coraz większe wymagania co do stron internetowych czy aplikacji. Do najważniejszych czynników zwiększających tzw. User Experience należą <strong>dostępność, szybkość i niezawodność.</strong> Dobrze skonfigurowany system bazodanowy taki jak MongoDB jest odporny na awarie, skalowalny i pozwala na hierarchizację i zapis sporych ilości danych, zatem w pełni odpowiada na potrzeby projektów e-commerce. &nbsp;</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nearshore-it.eu/pl/artykuly/mongodb-nosql-w-ecommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Trendy w e-commerce 2021</title>
		<link>https://nearshore-it.eu/pl/artykuly/najwazniejsze-trendy-w-e-commerce-w-2021-roku/</link>
					<comments>https://nearshore-it.eu/pl/artykuly/najwazniejsze-trendy-w-e-commerce-w-2021-roku/#respond</comments>
		
		<dc:creator><![CDATA[-- Nie pokazuj autora --]]></dc:creator>
		<pubDate>Wed, 21 Apr 2021 07:43:36 +0000</pubDate>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Cloud engineering]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Transformacja cyfrowa]]></category>
		<guid isPermaLink="false">https://nearshore-it.eu/artykuly/najwazniejsze-trendy-w-e-commerce-w-2021-roku/</guid>

					<description><![CDATA[Kiedy przygotowywaliśmy prognozę dotyczącą głównych trendów w e-commerce na 2020 rok, nikt nie mógł przewidzieć tak ogromnego rozwoju tej branży. E-commerce, wcześniej uważany za alternatywę, z powodu pandemii szybko stał się wiodącym kanałem sprzedaży. "Koronarewolucja" spowodowała wzrost znaczenia sprzedaży w sieci na całym świecie. Wpłynęła na branżę sprzedażową także w kontekście trendów technologicznych. Co przyniesie 2021 rok? Jakie trendy wyznaczą kierunek rozwoju handlu w sieci? Jeśli prowadzisz sklep internetowy, przeczytaj artykuł i poznaj trendy i prognozy dla branży e-commerce.]]></description>
										<content:encoded><![CDATA[
<div class="table-of-contents">
    <p class="title"></p>
    <ol>
                    <li><a href="#Rok-2020-przyspieszenie-w-branży-e-commerce">1.  Rok 2020: przyspieszenie w branży e-commerce</a></li>
                    <li><a href="#E-commerce-nowe-możliwości-i-trendy">2.  E-commerce – nowe możliwości i trendy</a></li>
                    <li><a href="#Najważniejsze-trendy-w-e-commerce-w-2021-roku">3.  Najważniejsze trendy w e-commerce w 2021 roku</a></li>
                    <li><a href="#Trendy-w-e-commerce-podsumowanie">4.  Trendy w e-commerce &#8211; podsumowanie</a></li>
            </ol>
</div>


<h2 class="wp-block-heading" id="Rok-2020-przyspieszenie-w-branży-e-commerce">Rok 2020: przyspieszenie w branży e-commerce</h2>



<p>W 2020 roku&nbsp;byliśmy świadkami zawrotnego&nbsp;przyspieszenia&nbsp;i rozwoju&nbsp;branży e-commerce, a&nbsp;w&nbsp;związku z kolejnymi&nbsp;lockdownami&nbsp;sprzedaż przeniosła się do&nbsp;sklepów internetowych. Jedną z najważniejszych zmian w handlu internetowym zaobserwowanych w czasie epidemii COVID-19 jest przyspieszenie modernizacji kanałów sprzedaży wśród liderów handlu tradycyjnego.&nbsp;&nbsp;Według raportu&nbsp;McKinsey, w&nbsp;ubiegłym&nbsp;roku branża e-commerce rozwijała się od<strong>&nbsp;2 do 5 razy szybciej</strong>&nbsp;w&nbsp;porównaniu<strong>&nbsp;</strong>z czasami przed pandemią. Zaowocowało to wzrostem liczby sklepów internetowych (o 39%, według raportu&nbsp;PrestaShop) i&nbsp;większym&nbsp;znaczeniem&nbsp;platform e-commerce, takich jak&nbsp;Shopify,&nbsp;WooCommerce&nbsp;czy Magento. Ten trend nie słabnie&nbsp;–&nbsp;według&nbsp;<a href="https://www.statista.com/statistics/534123/e-commerce-share-of-retail-sales-worldwide/" target="_blank" rel="noopener noreferrer">badań Statista</a>&nbsp;do 2023 roku e-handel będzie&nbsp;miał&nbsp;<strong>22-rocentowy udział w&nbsp;całej&nbsp;sprzedaży&nbsp;w skali globalnej.</strong>&nbsp; Oprócz handlu, rozwój e-commerce nie&nbsp;pozostał bez wpływu&nbsp;na&nbsp;inne&nbsp;sektory&nbsp;gospodarki,&nbsp;przyczyniając się do rozwoju logistyki, w tym&nbsp;rynku&nbsp;magazynowego.&nbsp;</p>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://nearshore-it.eu/wp-content/uploads/2024/09/JPro_21.04_graphic_2.png" alt="udział e-handlu w sprzedaży online według progznozy Statista" class="wp-image-34984" title="Trendy w e-commerce 2021 3"></figure></div>


<p></p>



<h2 class="wp-block-heading" id="E-commerce-nowe-możliwości-i-trendy">E-commerce – nowe możliwości i trendy</h2>



<p>Pandemia przyniosła nowe wyzwania, ale stworzyła też nowe możliwości w sprzedaży zarówno dla e-handlu, jak i dla klientów. Dystans społeczny, niedostępność tradycyjnych usług&nbsp;–&nbsp;wszystko to sprawiło, że klienci coraz częściej zaczęli&nbsp;zmieniać&nbsp;swoje&nbsp;zwyczaje zakupowe, szukając wygodnych i bezpiecznych opcji,&nbsp;także&nbsp;w duchu trendu&nbsp;eko. Warto wspomnieć&nbsp;o&nbsp;takich&nbsp;trendach w sprzedaży online jak:</p>



<ul class="wp-block-list">
<li><strong>Click&nbsp;and&nbsp;collect&nbsp;</strong>–&nbsp;klienci dokonują zakupów&nbsp;online i odbierają je w wybranym sklepie stacjonarnym.</li>



<li><strong>E-grocery&nbsp;</strong>–&nbsp;klienci zamawiają produkty spożywcze&nbsp;online&nbsp;i&nbsp;odbierają&nbsp;je&nbsp;w sklepie lub korzystają z dostawy do domu.</li>



<li><strong>Dostawa Out-of-Home</strong>&nbsp;–&nbsp;klienci chętnie korzystają z zakupów online i&nbsp;możliwości odbioru produktów w pobliskich paczkomatach. Usługa ta jest uważana za wygodną i ekologiczną.</li>



<li><strong>Ekodostawa</strong>&nbsp;–&nbsp;trend&nbsp;eko&nbsp;dotarł również do branży e-commerce. Klienci deklarują<a href="https://pitd.org.pl/news/e-commerce-2021-ewolucja-czy-rewolucja/" target="_blank" rel="noopener noreferrer">&nbsp;gotowość dopłaty za</a>&nbsp;ekologiczną dostawę produktów, żeby&nbsp;np.&nbsp;ograniczać tzw. ślad węglowy.</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://nearshore-it.eu/wp-content/uploads/2024/09/JPro_21.04_graphic_1.png" alt="trendy e-commerce w sprzedaży online" class="wp-image-34985" title="Trendy w e-commerce 2021 4"></figure></div>


<h2 class="wp-block-heading" id="Najważniejsze-trendy-w-e-commerce-w-2021-roku">Najważniejsze trendy w e-commerce w 2021 roku</h2>



<ol class="wp-block-list">
<li><strong>Multi-vendor&nbsp;marketplace&nbsp;</strong>–&nbsp;model ten dobrze prosperuje i&nbsp;można&nbsp;uznać&nbsp;go za wiodący trend w e-commerce. W tym modelu biznesowym wielu sprzedawców może&nbsp;prowadzić&nbsp;sprzedaż&nbsp;online w jednym miejscu, podobnie jak to ma miejsce w galeriach handlowych.</li>



<li><strong>Omnichannel&nbsp;</strong>–&nbsp;rola usług cyfrowych znacznie wzrosła, dziś strategia&nbsp;omnichannel&nbsp;w e-commerce&nbsp;to już raczej standard niż trend. Sprzedawcy muszą dostosować swoją ofertę do wielu kanałów&nbsp;i&nbsp;zapewnić dostęp do produktów zarówno online, za pośrednictwem urządzeń, jak i offline.</li>



<li><strong>UX i personalizacja&nbsp;</strong>–&nbsp;według raportu&nbsp;McKinsey&nbsp;koncentracja na UX w e-commerce stała się koniecznością. User Experience jest obecnie jedną z kluczowych metod zwiększania konkurencyjności w E-Commerce.&nbsp;Audyt UX, optymalizacja pod kątem User Experience,&nbsp;Customer Research&nbsp;to działania najczęściej rekomendowane. UX wiąże się także z kolejnym trendem, jakim jest&nbsp;product&nbsp;discovery.</li>



<li><strong>Product&nbsp;discovery&nbsp;</strong>–&nbsp;sprzedawcy muszą znać swoich klientów, ich potrzeby i preferencje oraz wprowadzać rozwiązania poprawiające&nbsp;Customer&nbsp;Experience. Kategoryzowanie produktów tak, aby ułatwić klientom ich filtrowanie,&nbsp;to tylko jeden ze sposobów promocji oferty i&nbsp;wsparcia klientów w podejmowaniu decyzji. W dzisiejszych czasach&nbsp;wyszukiwanie głosowe&nbsp;(Voice&nbsp;Search)&nbsp;i&nbsp;wizualne&nbsp;(Visual&nbsp;Search), a także oferowanie&nbsp;powiązanych&nbsp;produktów&nbsp;są kluczowym elementem personalizacji, który poprawia&nbsp;Customer&nbsp;Experience.</li>



<li><strong>Sztuczna&nbsp;inteligencja i&nbsp;uczenie maszynowe</strong>&nbsp;–&nbsp;rola sztucznej inteligencji i ML w handlu online rośnie,&nbsp;gdyż&nbsp;dziś klienci&nbsp;sklepów internetowych&nbsp;oczekują lepszego UX.&nbsp;Te zaawansowane rozwiązania sprawiają, że zakupy są szybsze, wygodniejsze i bezpieczniejsze. To również wymierne korzyści dla sprzedawców&nbsp;–&nbsp;poprawiają konwersję i umożliwiają im analizowanie dużych zbiorów danych.</li>



<li><strong>E-commerce staje się Agile</strong>&nbsp;–&nbsp;sytuacja&nbsp;jest&nbsp;dziś&nbsp;bardzo dynamiczna, stąd&nbsp;niełatwo jest zaplanować cały rok z góry. Właściciele sklepów internetowych mogą wykorzystać&nbsp;metody&nbsp;Agile do zwinnego planowania działań sprzedażowych i marketingowych (dzieląc je na krótsze czasookresy, np. kwartalne Sprinty.)</li>



<li><strong>Mobile&nbsp;commerce&nbsp;</strong>–&nbsp;wydaje się, że nie ma odwrotu od trendu mobilnego&nbsp;w e-commerce.&nbsp;Obecnie już ponad 50% klientów robi zakupy online, korzystając z urządzeń mobilnych. Badania wskazują, że&nbsp;jeśli strona ofertowa nie załaduje&nbsp;w ciągu&nbsp;trzech sekund,&nbsp;klienci ją&nbsp;opuszczą, dlatego osoby prowadzące sprzedaż w&nbsp;internecie&nbsp;powinny&nbsp;skupić się na tym, aby ich strona była dostosowana do wyświetlania na urządzeniach mobilnych, responsywna, i żeby wpisywała się w trend &#8222;mobile&nbsp;first&#8221;.</li>



<li><strong>Transakcje bezgotówkowe&nbsp;–</strong>&nbsp;2020 rok przyniósł zwrot w&nbsp;stronę płatności bezgotówkowych. Rola transakcji online zyskiwała na popularności jeszcze&nbsp;przed pandemią.</li>



<li><strong>Sprzedaż&nbsp;transgraniczna&nbsp;</strong>–&nbsp;ten trend w e-commerce nabiera coraz większego znaczenia. Obserwujemy ekspansję światowych marek e-commerce, takich jak Amazon czy Allegro, które oferują produkty coraz szerszemu gronu konsumentów.&nbsp;Ekspansja na rynkach zagranicznych niesie&nbsp;wyzwanie&nbsp;w postaci wprowadzenia rozwiązań cyfrowych, które umożliwią szybsze dostarczanie produktów przy jednoczesnym obniżeniu kosztów.&nbsp;Kolejne wyzwania w tym obszarze to to&nbsp;bariera językowa czy regulacje prawne.</li>



<li><strong>Social&nbsp;commerce</strong>&nbsp;–&nbsp;tzw.&nbsp;social&nbsp;selling&nbsp;cieszy się coraz większą popularnością.&nbsp;<a href="https://eizba.pl/wp-content/uploads/2021/03/Co_ugryzie_ecommerce_2021_Raport-1.pdf" target="_blank" rel="noopener noreferrer">54% klientów</a>&nbsp;przyznaje, że interesują ich&nbsp;pezentacje&nbsp;produktów na żywo oraz transmisje sprzedażowe w mediach społecznościowych. Klienci dołączają także do&nbsp;dedykowanych&nbsp;grup na Facebooku, w których mogą znaleźć interesujące ich produkty.</li>



<li><strong>Silver&nbsp;commerce&nbsp;</strong>–&nbsp;nie jest tajemnicą, że&nbsp;europejskie&nbsp;społeczeństwo&nbsp;starzeje się. Przewiduje się, że do 2030 r. seniorzy (pokolenie określane jako „Silver Power”) w wieku 65+ będą stanowić ¼ całej populacji Europy. W dzisiejszych czasach seniorzy korzystają z zakupów online równie chętnie jak reprezentanci młodszych pokoleń, w dużej mierze przyczyniła się do tego także pandemia. Właściciele sklepów online, przygotowując ofertę, nie powinni zapominać o potrzebach tej grupy&nbsp;konsumentów,&nbsp;i zadbać o odpowiedni UX&nbsp;strony.</li>



<li><strong>Headless commerce i PWA </strong>– sprzedawcy e-commerce, którzy chcą być o krok przed konkurencją, muszą zadbać o to, by ich strony internetowe były szybkie, responsywne i atrakcyjne wizualnie. Tu z pomocą przychodzą PWA i architektura headless commerce. Headless commmerce to w dużym skrócie oddzielenie warstwy front-end i back-end aplikacji e-commerce, co przekłada się na elastyczność i szybkość witryny. Zmiana strony w PWA (Progressive Web Application) pomaga poprawić jej responsywność, a tym samym zapewnić klientom lepsze doświadczenie zakupowe.</li>
</ol>



<h2 class="wp-block-heading" id="Trendy-w-e-commerce-podsumowanie">Trendy w e-commerce &#8211; podsumowanie</h2>



<p>Dziś branża e-commerce intensywnie się rozwija i wymaga nowych rozwiązań, które pozwolą sprzedawać produkty szybciej i wydajniej oraz zapewnić możliwie jak najlepsze doświadczenie zakupowe klientom. Przyzwyczajenia klientów, ich oczekiwania, zmieniają branżę e-commerce na naszych oczach. Prowadząc sklep internetowy, aby nadążyć za najnowszymi trendami (takimi jak np. omnichannel, mobile commerce czy social commerce), właściciele powinni wdrażać odpowiednie rozwiązania cyfrowe oraz stawiać na technologie, które poprawią Customer Experience &#8211; niezależnie od grupy docelowej klientów.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nearshore-it.eu/pl/artykuly/najwazniejsze-trendy-w-e-commerce-w-2021-roku/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Wzorce projektowe w systemach e-commerce</title>
		<link>https://nearshore-it.eu/pl/artykuly/wzorce-projektowe-w-systemach-e-commerce/</link>
					<comments>https://nearshore-it.eu/pl/artykuly/wzorce-projektowe-w-systemach-e-commerce/#respond</comments>
		
		<dc:creator><![CDATA[Piotr]]></dc:creator>
		<pubDate>Wed, 15 Jul 2020 06:18:26 +0000</pubDate>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://nearshore-it.eu/artykuly/wzorce-projektowe-w-systemach-e-commerce/</guid>

					<description><![CDATA[Systemy e-commerce charakteryzują się dużą złożonością. Dzięki niej jednak programiści zyskują bardzo dużą elastyczność w projektowaniu. Aby system był czytelny dla programisty, każda aplikacja e-commerce powinna powstawać w oparciu o ogólnie przyjęte wzorce projektowe. W dzisiejszym tekście chciałbym przybliżyć dobre praktyki i opisać wybrane wzorce, ale i przestrzec przed antywzorcami, które też niestety czasami się pojawiają.]]></description>
										<content:encoded><![CDATA[
<div class="table-of-contents">
    <p class="title">Przejdź do:</p>
    <ol>
                    <li><a href="#E-commerce-od-czego-zaczac">1.  E-commerce – od czego zacząć?</a></li>
                    <li><a href="#Nikt-nie-obiecywal-ze-bedzie-latwo">2.  Nikt nie obiecywał, że będzie łatwo</a></li>
                    <li><a href="#Najwazniejsze-wzorce-projektowe-w-e-commerce">3.  Najważniejsze wzorce projektowe w e-commerce</a></li>
                    <li><a href="#Pomysle-o-tym-pozniej-czyli-antywzorce-projektowe">4.  Pomyślę o tym później – czyli antywzorce projektowe</a></li>
                    <li><a href="#Podsumowanie">5.  Podsumowanie</a></li>
            </ol>
</div>


<h2 class="wp-block-heading" id="E-commerce-od-czego-zaczac">E-commerce – od czego zacząć?</h2>



<p>Próg wejścia w przypadku programowania systemów e-commerce, ze względu na ich złożoność, jest dużo większy niż w przypadku pisania systemu od podstaw. Żeby zacząć rozwijać taką aplikację, potrzebne są więc spora wiedza i doświadczenie. Tworząc taki system, można dużą część funkcjonalności pokryć funkcjami “out of the box”, jakich nam dostarcza jego wersja domyślna. Natomiast modyfikacje takiego systemu wymagają już sporej wiedzy na temat jego budowy i funkcjonowania.</p>



<p><strong>Pracę nad aplikacją e-commerce dobrze jest zacząć od szkolenia z zakresu programowania w danej technologii. W ten sposób zdobywamy podstawową wiedzę na temat dobrych praktyk programowania w projekcie.</strong> Często zdarza się, że systemy e-commerce wykorzystują gotowe frameworki służące do pisania aplikacji. Złożoność takich systemów jest duża, jednak owocuje to korzyściami dla programistów i użytkowników. Otrzymujemy potężne aplikacje, które są bardzo elastyczne oraz mają spore możliwości konfiguracyjne dla użytkownika obsługującego je od zaplecza.</p>



<p><strong>Czytaj także: <a href="https://nearshore-it.eu/pl/artykuly/frameworkowe-wojny">Frameworkowe wojny</a></strong></p>



<h2 class="wp-block-heading" id="Nikt-nie-obiecywal-ze-bedzie-latwo">Nikt nie obiecywał, że będzie łatwo…</h2>



<p>Poruszanie się w gąszczu wzorców nie należy do najłatwiejszych. Ponadto jedna funkcjonalność może wpływać na drugą i trzeba wcześniej upewniać się co do wdrażanych modyfikacji w systemie. Warto też pamiętać, że wszystkie modyfikacje należy wykonywać zgodnie z zasadami. <strong>Dlatego właśnie moim zdaniem utrzymywanie systemów e-commerce jest trudniejsze niż ich pisanie.</strong></p>



<p><strong>Duże systemy e-commerce napisane w technologii PHP, takie jak Magento czy Shopware, korzystają z bibliotek Symfony i Zend.</strong> Na rynku mamy wiele podobnych rozwiązań gotowych do instalacji i rozbudowy. Niektóre systemy oferują wprawdzie wersję enterprise dla bardziej wymagających klientów, jednak licencja jest zazwyczaj kosztowna i przeznaczona dla dużych systemów. Warto więc rozważyć kastomizację, która będzie tańsza i będzie w pełni spełniać wymagania naszej firmy.&nbsp;<strong>Co ważne, na rynku narzędzi e-commerce zaczęły się już pojawiać systemy, które można łatwo skalować w chmurze AWS, Google Cloud lub Azure.</strong> Idealnie więc jest mieć rozwiązanie, które pozwala na migrację pomiędzy chmurami.&nbsp;Aby stworzyć tak skomplikowany system, trzeba trzymać się sztywnych reguł pisania aplikacji. Jak więc ułatwić sobie pracę? </style><div class="promotion-box promotion-box--image-left "><div class="tiles latest-news-once"><div class="tile"><div class="tile-image"><img decoding="async" src="https://nearshore-it.eu/wp-content/uploads/2022/12/nearshore_2022.12.01_cover.jpg" alt="nearshore 2022.12.01 cover" title="Wzorce projektowe w systemach e-commerce 5"></div><div class="tile-content"><p class="entry-title client-name">EXPERT KNOWLEDGE</p>

<h3>Read on to discover the importance of Scrum's value of respect.</h3>
<h3><a class="btn btn-primary" href="https://nearshore-it.eu/articles/best-practices/scrum-values-respect-in-scrum&quot;" target="_blank" rel="noopener">Read article</a></h3></div></div></div></div></p>



<h2 class="wp-block-heading" id="Najwazniejsze-wzorce-projektowe-w-e-commerce">Najważniejsze wzorce projektowe w e-commerce</h2>



<p>Wzorców projektowych w pisaniu systemów informatycznych jest mnóstwo i nie chciałbym się skupiać na wymienianiu wszystkich. Postaram się przybliżyć najważniejsze z nich, które przynoszą największe korzyści pod względem jakości kodu. Oto kilka wzorców projektowych, bez których stworzenie jakiejkolwiek aplikacji komercyjnej byłoby wręcz niemożliwe. </p>



<p>Wyróżniamy trzy rodzaje wzorców projektowych:</p>



<h3 class="wp-block-heading">Kreacyjne</h3>



<p>Opisują one procesy tworzenia nowych obiektów, do ich zadań należą także wszelkie czynności związane z ich konfiguracją oraz tworzeniem typów danych.</p>



<ul class="wp-block-list">
<li><strong><em>Property</em> </strong>– to najbardziej podstawowy z wzorców kreacyjnych. Służy głównie do przetrzymywania konfiguracji, jest to bardzo ważne ze względu na to, że eliminuje ryzyko duplikowania wartości konfigurujących oraz ułatwia późniejsze modyfikacje i utrzymywanie kodu.</li>



<li><em><strong>Abstract factory</strong> </em>– jest wzorcem, który może posłużyć w budowaniu aplikacji, określa on interfejs do tworzenia różnych obiektów należących do tego samego typu (domeny).</li>



<li><strong><em>Factory method</em></strong> – jest podobnym wzorcem do abstract factory. Również określa interfejs, z tym, że odnosi się do różnych metod zamiast obiektów.<br><h3>Strukturalne</h3> Definiują struktury powiązanych ze sobą obiektów. </li>
</ul>



<ul class="wp-block-list">
<li><strong style="font-size: 16px;"><em>Adapter</em> </strong><span style="font-size: 16px;">– to przykład wzorca strukturalnego, który może posłużyć obsługi niezgodnych interfejsów w obiektach. Jego zadaniem w takim przypadku jest umożliwienie komunikacji takich obiektów.</span></li>



<li><em><strong>Facade</strong> </em>– to kolejny wzorzec strukturalny. Przechowuje on mapę obiektów wraz z możliwością ich obsłużenia. Implementacja tego wzorca może odbyć się przez stworzenie klasy oraz osadzenie w niej wszystkich obiektów, które realizują konkretną logikę aplikacji. <br><h3>Czynnościowe</h3><p>Opisują wzajemne zależności pomiędzy obiektami.</p></li>



<li><strong><em>Observer</em> </strong>– to jeden z popularnych wzorców czynnościowych. Służy on do obsługi zdarzeń w aplikacjach i dzięki niemu aplikację można łatwo rozszerzać. Przykładem takiego zdarzenia w systemie e-commerce może być moment wystawienia faktury za transakcję. Przykładowo, programista w zależności od wymogów biznesu może zaprogramować jakąś akcję po wystawieniu faktury, np. dodatkowe powiadomienie dla pracownika sklepu.</li>



<li><strong><em>Dependency injection</em> </strong>– kolejnym wzorcem czynnościowym jest dependency injection. Polega on na „wstrzykiwaniu” zależności jednego obiektu do drugiego oraz wykonywanie na nim operacji, na podstawie których jest realizowana logika aplikacji. Pozwala na usuwanie zależności pomiędzy danymi komponentami.</li>
</ul>



<h2 class="wp-block-heading" id="Pomysle-o-tym-pozniej-czyli-antywzorce-projektowe">Pomyślę o tym później – czyli antywzorce projektowe</h2>



<p>Pisząc o wzorcach w e-commerce, chciałbym wspomnieć także o antywzorcach projektowych, których również jest sporo.</p>



<ul class="wp-block-list">
<li><em><strong>Gold plating</strong> – </em>ciekawym antywzorcem projektowym jest gold plating, czyli tzw. złocenie. Mamy z nim do czynienie w sytuacji, gdy prace nad projektem lub zadaniem trwają dłużej, niż jest to wymagane (np. z powodu ciągłego ulepszania funkcjonalności i chęci dostarczenia klientowi jeszcze lepszego produktu). W pewnym momencie zostaje jednak przekroczony punkt krytyczny, w którym dodatkowy wysiłek nie przynosi wartości dodanej w projekcie.</li>



<li><strong><em>We’ll handle it later</em></strong><em> – </em>przykładem równie skrajnym jest wspomniane <em>we’ll handle it later, </em>czyli tzw. „Na tym etapie bym się tym nie przejmował”. Antywzorzec ten stosowany jest, gdy analiza danego zadania lub projektu nie została wykonana prawidłowo lub nie została przeprowadzona w ogóle.</li>



<li><strong><em>U mnie działa</em></strong> – kto z nas nie słyszał choć raz w życiu „U mnie działa?”. To często spotykane stwierdzenie można często spotkać przy uruchomieniu aplikacji na różnych systemach operacyjnych lub przy w różnych środowiskach klienckich. A przecież warto zbadać każde zgłoszenie – ignorowanie problemów na początkowym etapie może mieć dalsze konsekwencje na późniejszych etapach projektów.</li>



<li><strong><em>Hard code</em></strong> – tzw. umieszczenie w kodzie tej samej zmiennej w kilku miejscach, co drastycznie wpływa na późniejsze utrzymanie takiej aplikacji.</li>
</ul>



<h2 class="wp-block-heading" id="Podsumowanie">Podsumowanie</h2>



<p>Systemy e-commerce nie tracą na popularności i dają duże możliwości zarówno użytkownikom, jak i programistom. Aby nie pogubić się w ich złożoności i w pełni wykorzystać ich potencjał, warto wystrzegać się opisanych przeze mnie antywzorców i pogłębiać swoją wiedzę na temat dobrych praktyk. Nie tylko w programowaniu przekładają się one na najlepsze rezultaty. Mam nadzieję, że opisane przeze mnie przykładowe wzorce zachęcą Was do poznania kolejnych i stosowania ich w projektach. </style><div class="promotion-box promotion-box--image-left "><div class="tiles latest-news-once"><div class="tile"><div class="tile-content"></div></div></div></div></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nearshore-it.eu/pl/artykuly/wzorce-projektowe-w-systemach-e-commerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Angular – zróbmy swoją PWA (Progressive Web App)</title>
		<link>https://nearshore-it.eu/pl/artykuly/angular-zrobmy-swoja-progressive-web-application/</link>
					<comments>https://nearshore-it.eu/pl/artykuly/angular-zrobmy-swoja-progressive-web-application/#respond</comments>
		
		<dc:creator><![CDATA[Michal Wojcik]]></dc:creator>
		<pubDate>Wed, 22 Jan 2020 06:21:30 +0000</pubDate>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://nearshore-it.eu/artykuly/angular-zrobmy-swoja-progressive-web-application/</guid>

					<description><![CDATA[Wraz z rozwojem rynku e-commerce rośnie rola i popularność Progressive Web Apps. Aplikacja PWA pozwala stworzyć szybko ładującą się stronę w formie aplikacji mobilnej, która działa w trybie offline. Dodatkowo można liczyć także na docenienie przez roboty indeksujące Google’a, zgodnie z polityką mobile first i offline first, oraz dopracowane doświadczenie użytkownika. W artykule pokażę, jak samodzielnie krok po kroku z pomocą Angulara stworzyć, a następnie skonfigurować i przetestować swoją PWA.]]></description>
										<content:encoded><![CDATA[
<div class="table-of-contents">
    <p class="title">Przejdź do:</p>
    <ol>
                    <li><a href="#Co-to-jest-PWA">1.  Co to jest PWA?</a></li>
                    <li><a href="#Progressive-Web-App-czy-warto">2.  Progressive Web App – czy warto?</a></li>
                    <li><a href="#PWA-Narzedzia-dla-developera">3.  PWA– narzędzia dla developera</a></li>
                    <li><a href="#Dodanie-Progressive-Web-App-do-Angulara">4.  Dodanie Progressive Web App do Angulara</a></li>
                    <li><a href="#Jak-sprawdzic-dzialanie-PWA">5.  Jak sprawdzić działanie PWA?</a></li>
                    <li><a href="#Mamy-PWA-co-dalej">6.  Mamy PWA – co dalej?</a></li>
                    <li><a href="#Podsumowanie">7.  Podsumowanie</a></li>
            </ol>
</div>


<h2 class="wp-block-heading" id="Co-to-jest-PWA"><strong>Co to&nbsp;jest PWA?</strong></h2>



<p>Aplikacja PWA (Progressive Web App) jest stroną internetową, która zachowuje się jak aplikacja mobilna. Upraszczając, aplikacja PWA od &#8222;zwykłej&#8221; strony internetowej z JavaScript różni się w zasadzie tym, że posiada service worker oraz plik manifest json. Z punktu widzenia użytkownika działa niemal jak natywna aplikacja mobilna, ponieważ service worker umożliwia działanie w trybie offline, a plik manifest json odpowiada za jej wizualne podobieństwo. Z punktu widzenia developera aplikacja PWA daje możliwości stworzenia lepszego doświadczenia dla użytkownika końcowego. W tym krótkim artykule postaram się opisać konfigurację PWA przy użyciu Angulara, która jest bardzo prosta dzięki natywnemu wsparciu przez Angular CLI. Sama konfiguracja service workera nie ogranicza nas jednak tak naprawdę do użycia określonego frameworka JavaScript, typu React Angular czy Vue.js.</p>



<h2 class="wp-block-heading" id="Progressive-Web-App-czy-warto"><strong>Progressive Web App – czy&nbsp;warto?</strong></h2>



<p>Ponad połowa internautów w&nbsp;Polsce korzysta ze stron internetowych za&nbsp;pomocą urządzeń mobilnych, a&nbsp;posiadanie responsywnej, szybko ładującej się strony to&nbsp;obecnie być albo&nbsp;nie&nbsp;być w&nbsp;e-commerce. Wykorzystanie poprawnie zbudowanej aplikacji PWA znacznie ułatwia spełnienie wymagań i zaleceń optymalizacyjnych Google’a, przekłada się też na&nbsp;konkretne rezultaty – w&nbsp;niektórych przypadkach PWA pozwoliła&nbsp;<a href="https://developers.google.com/web/showcase/2016/flipkart" target="_blank" rel="noopener noreferrer">podnieść współczynnik konwersji o&nbsp;70%</a>.</p>



<p>Korzystanie z aplikacji PWA ułatwia możliwość jej instalacji na pulpicie urządzenia końcowego (nie wymaga pobierania z Google Play/ App Store). Użytkownik może korzystać z aplikacji w trybie offline (dane zsynchronizują się w momencie nawiązania połączenia). PWA to również funkcjonalność powiadomień push, które znacząco zwiększają zaangażowanie i są skuteczną metodą odzyskiwania utraconych koszyków w e-commerce.</p>



<p>Koszt rozwoju i utrzymania aplikacji PWA jest nieporównywalnie mniejszy niż w przypadku aplikacji natywnych. Nie wymaga akceptacji procesu aktualizacji po stronie sklepu z aplikacjami, co znacznie usprawnia szybkość wdrażania kolejnych wersji, ułatwia też analizę danych i raportowanie.</p>



<h2 class="wp-block-heading" id="PWA-Narzedzia-dla-developera"><strong>Progressive Web Apps –</strong>&nbsp;<strong>narzędzia dla developera</strong></h2>



<p>Istnieją liczne strony takie jak&nbsp;<a href="https://whatwebcando.today/" target="_blank" rel="noopener noreferrer">https://whatwebcando.today/</a><u>,&nbsp;</u>które zapewniają wsparcie dla developerów. W prosty sposób można uzyskać dostęp do komponentów poprzez JavaScript i service workera. Warto tutaj wspomnieć, że pełne wsparcie komponentów posiada jedynie Google Chrome na systemie Android. Niestety, iPhone z Safari ogranicza nas w niektórych miejscach. Wsparcie komponentów tak dynamicznie się zmienia, że nie warto tutaj poruszać tematu różnic między przeglądarkami. W pierwszej części artykułu postaram się wytłumaczyć, jak w pełni skonfigurować oraz przetestować naszą aplikację. W dalszej części skupię się na innych komponentach, jak tryb offline, notyfikacje, geolokalizacja czy dostęp do plików. Gotowi na przygodę z PWA? Zacznijmy!</p>



<h2 class="wp-block-heading" id="Dodanie-Progressive-Web-App-do-Angulara"><strong>Dodanie Progressive Web App do&nbsp;Angulara</strong></h2>



<p>Zaczynamy od&nbsp;zainstalowania aplikacji angularowej przez&nbsp;Angular CLI. Następnie należy wywołać komendę&nbsp;<strong>ng add @angular/pwa</strong></p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="600" height="356" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_1-e1727098585347.jpg" alt="PWA angular ng add @angular/pwa" class="wp-image-29535" title="Angular – zróbmy swoją PWA (Progressive Web App) 6" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_1-e1727098585347.jpg 600w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_1-e1727098585347-300x178.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_1-e1727098585347-495x294.jpg 495w" sizes="(max-width: 600px) 100vw, 600px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Dzięki temu w naszym folderze zostaje dodanych kilka plików potrzebnych do uruchomienia PWA:</p>



<p><strong>ngsw-config.json</strong> – plik konfiguracyjny, który pozwala na ustawienie reguł cache’owania danych. Więcej informacji o strategiach cache’owania można znaleźć tutaj: <a href="https://serviceworke.rs/caching-strategies.html" target="_blank" rel="noopener">https://serviceworke.rs/caching-strategies.html</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="608" height="591" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_2-e1727099074608.jpg" alt="PWA Angular - plik konfiguracyjny - cache’owanie danych" class="wp-image-29538" title="Angular – zróbmy swoją PWA (Progressive Web App) 7" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_2-e1727099074608.jpg 608w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_2-e1727099074608-300x292.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_2-e1727099074608-406x395.jpg 406w" sizes="(max-width: 608px) 100vw, 608px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-text-align-center"><em>Na konfiguracji tego pliku skupimy się w kolejnej części artykułu.</em></p>



<p><strong>manifest.webmanifest</strong> – plik konfiguracyjny, który pozwala na ustawienie zachowania naszej aplikacji po zapisaniu przez użytkownika (orientacja, kolory, ikony).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="606" height="1057" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_3-e1727099183118.jpg" alt="PWA Angular - manifest.webmanifest" class="wp-image-29541" title="Angular – zróbmy swoją PWA (Progressive Web App) 8" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_3-e1727099183118.jpg 606w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_3-e1727099183118-172x300.jpg 172w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_3-e1727099183118-226x395.jpg 226w" sizes="(max-width: 606px) 100vw, 606px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>*.png</strong> – domyślne ikony, które będą wyświetlać się użytkownikowi po zapisaniu aplikacji na pulpicie ekranu.</p>



<p>Dodatkowo zostaną zaktualizowane pliki:</p>



<p><strong>angular.json</strong> (ustawiona flaga ServiceWorker: true),</p>



<p><strong>index.html</strong> – dodana linijka do wczytania manifestu,</p>



<p><strong>app.module.ts</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="576" height="59" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_4-e1727099280942.jpg" alt="PWA Angular - app.module.ts" class="wp-image-29544" title="Angular – zróbmy swoją PWA (Progressive Web App) 9" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_4-e1727099280942.jpg 576w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_4-e1727099280942-300x31.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_4-e1727099280942-495x51.jpg 495w" sizes="auto, (max-width: 576px) 100vw, 576px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Dzięki temu nasza aplikacja wie, że gdy uruchomimy ją w trybie produkcyjnym, service worker powinien zostać zarejestrowany do naszej przeglądarki.</p>



<h2 class="wp-block-heading" id="Jak-sprawdzic-dzialanie-PWA">Jak sprawdzić działanie PWA?</h2>



<p>Niestety samo uruchomienie aplikacji przez Angular CLI nie pozwoli nam sprawdzić, czy service worker działa poprawnie. Możemy jednak w łatwy sposób to obejść, uruchamiając zbudowaną przez siebie aplikację lokalnie. Można to zrobić łatwo w dwóch krokach.</p>



<ol class="wp-block-list">
<li>Budujemy aplikację w trybie produkcyjnym: <strong>ng build &#8211;prod</strong></li>



<li>Uruchamiamy http-server (jeżeli nie mamy zainstalowanego lokalnie, to najpierw: <strong>npm i http-server -g</strong>) komenda: <strong>http-server ./dist/pwa-test -o</strong></li>
</ol>



<p>Pamiętajmy, że po <strong>dist</strong> należy wprowadzić swoją nazwę aplikacji. Po wpisaniu komendy powinna uruchomić się nasza strona internetowa. Aby sprawdzić poprawność service workera i manifestu, użyjemy wbudowanych narzędzi w Google Chrome. Po uruchomieniu Developers Tools przechodzimy do zakładki <strong>Application.</strong></p>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="600" height="340" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_5-e1727099349383.jpg" alt="PWA Angular - uruchamianie aplikacji PWA lokalnie" class="wp-image-29547" title="Angular – zróbmy swoją PWA (Progressive Web App) 10" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_5-e1727099349383.jpg 600w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_5-e1727099349383-300x170.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_5-e1727099349383-495x281.jpg 495w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p>W menu bocznym <strong>Service Worker</strong> powinniśmy zobaczyć informację, że nasz service worker został odnaleziony i jest poprawnie zainstalowany.</p>



<p>W zakładce <strong>Manifest</strong> znajdziemy z kolei informację, czy domyślna konfiguracja (kolory, ikony oraz nazwa) jest zaimportowana poprawnie.</p>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="600" height="340" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_6-e1727099391161.jpg" alt="PWA Angular - testowanie pliku manifest json lokalnie" class="wp-image-29550" title="Angular – zróbmy swoją PWA (Progressive Web App) 11" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_6-e1727099391161.jpg 600w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_6-e1727099391161-300x170.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_6-e1727099391161-495x281.jpg 495w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Wszystkie te dane są zaczytywane z plików, które zostały wygenerowane przez Angular CLI po zbudowaniu aplikacji. Znajdują się one w folderze <strong>/dist/NazwaAplikacji.</strong></p>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="312" height="344" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_7-e1727099430732.jpg" alt="PWA Angular - testowanie lokalnie" class="wp-image-29553" title="Angular – zróbmy swoją PWA (Progressive Web App) 12" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_7-e1727099430732.jpg 312w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_7-e1727099430732-272x300.jpg 272w" sizes="auto, (max-width: 312px) 100vw, 312px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Dzięki pozytywnemu wgraniu manifestu oraz service workera nasza aplikacja pozwala na korzystanie w pełni z komponentów na urządzeniu mobilnym czy komputerze.</p>



<h2 class="wp-block-heading" id="Mamy-PWA-co-dalej">Mamy PWA – co dalej?</h2>



<p>Dzięki domyślnej konfiguracji możemy jedynie zapisać naszą aplikację na telefonie czy komputerze. Aby to zrobić, na komputerze wystarczy kliknąć ikonę plusika obok adresu strony internetowej.</p>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="884" height="101" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_8-e1727099461510.jpg" alt="PWA Angular - pobieranie aplikacji na telefon" class="wp-image-29556" title="Angular – zróbmy swoją PWA (Progressive Web App) 13" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_8-e1727099461510.jpg 884w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_8-e1727099461510-300x34.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_8-e1727099461510-768x88.jpg 768w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_8-e1727099461510-495x57.jpg 495w" sizes="auto, (max-width: 884px) 100vw, 884px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Nazwa oraz ikona są pobierane z pliku <strong>manifest.</strong></p>



<p>Po zapisaniu nasza strona internetowa będzie zachowywać się jak aplikacja, a użytkownik nie jest świadomy, że uruchamia stronę internetową w przeglądarce. Po uruchomieniu aplikacji (po zapisaniu) powinno nam się wyświetlić tak wyglądające okno:</p>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="576" height="340" src="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_9-e1727099510814.jpg" alt="PWA Angular - ekran aplikacji" class="wp-image-29559" title="Angular – zróbmy swoją PWA (Progressive Web App) 14" srcset="https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_9-e1727099510814.jpg 576w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_9-e1727099510814-300x177.jpg 300w, https://nearshore-it.eu/wp-content/uploads/2024/09/Angular_screen_9-e1727099510814-495x292.jpg 495w" sizes="auto, (max-width: 576px) 100vw, 576px" /></figure></div>


<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p><em>Jak widać na zdjęciu, znikł cały górny pasek z adresem, dodatkami oraz zakładkami. Użytkownik nie jest świadomy, że aplikacja uruchomiła się w przeglądarce.</em></p>



<p>Udało nam się skonfigurować aplikację startową w Angularze, tak aby zachowywała się jak Progressive Web Application. Użytkownik korzystający z naszej strony może na razie jedynie ją zapisać. W kolejnych krokach możemy dodać trochę kodu do naszej aplikacji, tak aby poinformować użytkownika o nowych wersjach naszej strony czy umożliwić korzystanie z niej w trybie offline. W kolejnych artykułach rozwinę temat PWA, pisząc o tym, jak rozwinąć naszą nowo powstałą aplikację o nowe funkcjonalności.</p>



<h2 class="wp-block-heading" id="Podsumowanie">Podsumowanie</h2>



<p>Stworzenie i konfiguracja PWA nie są trudne. W sieci pojawia się coraz więcej publikacji o możliwościach technologii, która już teraz jest nazywana frontendową rewolucją. Nic dziwnego – Progressive Web Application pozwała w łatwy sposób stworzyć przyjazną i szybko ładującą się stronę. Dla developerów to sygnał, że wykorzystując technologię PWA, wdrażają rozwiązanie, które przyniesie konkretne, mierzalne rezultaty.</p>



<p>Czytaj również: <a href="https://nearshore-it.eu/pl/artykuly/najlepsze-frameworki-frontendowe/">Który framework frontendowy jest najlepszy?</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nearshore-it.eu/pl/artykuly/angular-zrobmy-swoja-progressive-web-application/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
