ProgramowaniePolecane tematy
10 prognoz i wyzwań dla programistów w 2018 roku
Sztuczna inteligencja AI (Artificial Intelligence), blockchain, chatboty, bezserwerowa architektura… To tylko niektóre z najnowszych technologii, które mogą odmienić życie programistów w roku 2018. Nowinki te z tygodnia na tydzień stają się coraz dojrzalszymi narzędziami i produktami. Deweloperzy już mogą zacierać ręce na myśl o wykorzystaniu ich w codziennych praktykach. Przedstawiamy 10 innowacji, które mogą w najbliższej przyszłości znacząco wpłynąć na pracę deweloperów.
1. DevOps skręca w stronę NoOps
Programiści z całego świata są zgodni co do tego, że metodyka DevOps (Development and Operations) pozwala tworzyć nowe aplikacje i systemy szybciej, przy jednoczesnym zachowaniu wysokiego poziomu wydajności i jakości. Główną wadą tej metody jest jednak to, że większość deweloperów spędza ponad 60% czasu na kwestiach operacyjnych, na czym cierpi samo programowanie. Jednocześnie biznes wywiera presję, aby programiści tworzyli więcej innowacyjnych rozwiązań. Coraz częściej słychać zatem głosy, że działania operacyjne powinno się automatyzować w oparciu o technologie wirtualizujące, np. kontenery. Dzięki narzędziom takim jak np. Docker, można tworzyć klastry kontenerów z możliwością ich replikacji i automatycznego zarządzania. Takie podejście niebawem stanie się standardem w pracy programistów.
Zapraszamy do udziału w konferencji Oracle Code
Wszystkie trendy, narzędzia i nowe programistyczne wyzwania już 11 maja 2018 r. będą tematem wykładów, dyskusji i kuluarowych rozmów podczas Oracle Code 2018 w Warszawie. To pierwsza taka konferencja w Polsce. W zeszłorocznej edycji odwiedzono 21 miast. W konferencjach na całym świecie wzięło udział (także online) ponad 600 tys. deweloperów i programistów oraz 200 prelegentów z 31 krajów z całego świata.
Rejestracja na konferencję na stronie: https://developer.oracle.com/code/warsaw
2. Architektura bezserwerowa na szeroką skalę
Atrakcyjność tzw. architektury bezserwerowej dla biznesu i IT jest oczywista. Wyobraźmy sobie, że potrzebujemy kompleksowej aplikacji podróżniczej. Możemy dzięki niej wyszukać i kupić bilety lotnicze, wynająć pokój w hotelu czy samochód. Każdą z tych opcji można zaprojektować jako osobną funkcję napisaną w dowolnym języku Java, Ruby czy Python, uruchamianą tylko wtedy, gdy tego potrzebujemy. Użytkownik nie płaci za całą aplikację i infrastrukturę, tylko za uruchomienie kodu. Tworzenie aplikacji z myślą o funkcjonowaniu w modelu serverless wymaga jednak od deweloperów nowego podejścia, bo ów model nakłada na twórców oprogramowania szereg wymagań architektonicznych. Programiści będą musieli określić w jaki sposób różne funkcje powinny być ze sobą połączone, a także ustalić mechanizmy, które będą minimalizować straty, gdy jedna z funkcji ulegnie awarii.
3. Konteneryzacja programowania – dlaczego nie?
Wykorzystanie konteneryzacji do prototypowania, tworzenia, uruchamiania i działania aplikacji stanie się niebawem podstawową czynnością dla wszystkich programistów i DevOp-ów. Idea tworzenia oprogramowania z wykorzystaniem konteneryzacji umożliwia bardzo łatwe dzielenie się tworzonym kodem z innymi programistami i specjalistami DevOps. Znacznie przyśpiesza to wdrażanie aplikacji. Oczywiście kontenery nie wszędzie mogą zdać egzamin. Przykładowo rozwiązania IT wykorzystujące wiele systemów operacyjnych pozostaną m.in. przy architekturze maszyn wirtualnych. Kontenery wymagają bowiem uruchomienia wszystkiego na tym samym systemie operacyjnym i nie mogą zostać wymieszane. Dlatego programiści powinni myśleć o nich jako o kolejnej broni w swoim arsenale do zastosowania wówczas, kiedy przyjdzie na to odpowiednia pora.
4. Samonaprawa, samozarządzanie i samokonfiguracja
Programiści i zespoły produkcyjne gromadzą coraz większe wolumeny danych, które potem przetwarza się, aby rozwiązać dany problem lub zwiększyć wydajność aplikacji istotnych dla biznesu. To wszystko wymaga jednak zaangażowania znaczących zasobów ludzkich i czasu. W nadchodzących miesiącach i latach masowe wykorzystanie technologii uczenia maszynowego czy projektowania aplikacji w chmurze, może pomóc programistom w stworzeniu komplementarnego narzędzia do monitoringu aplikacji. Będzie ono automatycznie diagnozować niestandardowe zachowania aplikacji, a także identyfikować elementy odpowiedzialne za zakłócenia jej pracy. Następnie podpowie, co trzeba usprawnić w systemie. Ostatni etapem jest automatyczna reakcja na problem. Już teraz na rynku działają narzędzia, posiadające funkcje automatycznego wykrywania anomalii i reakcji na nie. Przykładem może być np. Oracle Management Cloud.
5. Monitoring bezpieczeństwa – sojusznik programisty
Programiści wychodzą niekiedy z założenia, że monitoring bezpieczeństwa to zadanie nie dla nich, ale dla kogoś zupełnie innego. Tymczasem wykorzystanie kompleksowych systemów bezpieczeństwa, opartych na uczeniu maszynowym i dostarczonych w modelu Software as a Service (SaaS) może pomóc programistom w szybszym tworzeniu wydajnego i sprawnego kodu. W szczególności wysoce zautomatyzowane systemy bezpieczeństwa mogą usprawnić ten proces. W czasie rzeczywistym podczas prac nad wdrożeniem nowych aplikacji czy systemów, będą szukać ewentualnych luk w zabezpieczeniach i dostosowywać firmowe systemy do potencjalnej sytuacji. Programista unika dzięki temu ewentualnych masowych poprawek już po wdrożeniu kodu.
6. Uczenie maszynowe powszechną praktyką
Ze względu na powyższe trendy i potrzeby, aplikacje oparte na zaawansowanych procesach uczenia maszynowego staną się niebawem codziennością. Dzisiaj jeszcze technologia ta jest budzącą zainteresowanie innowacją, ale coraz więcej firm dostrzega, że uczące się aplikacje pozwalają na zaoszczędzenie czasu, zwiększenie zysków i automatyzację procesów analitycznych oraz biznesowych. Wraz z rozwojem analityki Big Data zapotrzebowanie na aplikacje potrafiące szybko i bezbłędnie analizować ogrom danych, będzie jeszcze bardziej rosnąć i wymagać od programistów stosowania różnych podejść. To od nich w pierwszej kolejności będzie zależeć, czy uczenie maszynowe będzie zmierzać w stronę sztucznej inteligencji, która samodzielnie zrozumie pobrane dane, zaproponuje kreatywne rozwiązanie i przy tym nie będzie historycznych danych do tego, aby tworzyć modele działań.
7. Chatboty wypierają tradycyjne aplikacje
Skoro mowa o inteligentnych maszynach, to już niebawem cała komunikacja biznesowa może odbywać się przy użyciu chatbotów, a nie stron internetowych czy aplikacji mobilnych. W dobie rosnącej popularności komunikatorów typu Messenger, WeChat czy WhatsApp, użytkownicy coraz bardziej pragną komunikacji prostej, przyjemnej i bezpośredniej. Programiści będą więc w znacznie większym stopniu tworzyć chatboty, które dzięki rozwijającym się procesom uczenia maszynowego, będą w stanie uczyć się zachowań użytkownika i w efekcie udzielać znacznie bardziej spersonalizowanych odpowiedzi. Tworzenie i rozbudowa botów czy innych platform do komunikacji staje się jednocześnie znacznie prostsza od programowania aplikacji mobilnych.
8. Sztuczna inteligencja nowym interfejsem użytkownika
Zapowiadana od lat zmiana już w 2018 roku może stać się faktem. Sztuczna inteligencja będzie wkrótce spełniać rolę nowego interfejsu użytkownika UI (User Interface). Aplikacje cały czas przetwarzają setki danych o naszych działaniach. Nadal jednak wiele czynności użytkownik musi wykonać samodzielnie. Implementacja zaawansowanych systemów uczenia maszynowego może jednak sprawić, że aplikacje będą wiedziały co zrobić, zanim użytkownik nawet wciśnie przycisk. Już teraz możliwe mogłoby być zlecanie transakcji przez odpowiednie aplikacje w oparciu o wcześniejsze działania użytkownika. Firmy i programiści muszą zdać sobie jednak sprawę, że ta zmiana wymaga indywidualnego projektowania aplikacji, zamiast programowania dla mas. Programista musi dokonać selekcji jakie informacje są kluczowe dla danej aplikacji. Wraz z rozwojem tej technologii interfejsy AI będą nie tylko automatyzować codzienne działania, ale także proponować nowe, lepsze rozwiązania.
9. Open source jako usługa w chmurze
Projekty open source cieszą się bardzo dużą popularnością wśród programistów. Biorąc pod uwagę fakt, że coraz więcej powszechnie używanych i cenionych produktów opiera się na tym rozwiązaniu (najbardziej znane to Firefox, Linux, Android), można stwierdzić, że open source to przyszłość rozwiązań IT. Zdaniem specjalistów, jest to najlepszy, ale jednocześnie skomplikowany w implementacji i utrzymaniu, sposób na pozyskiwanie innowacyjnych rozwiązań. Wraz z rozwojem aplikacji typu open source rośnie potrzeba zapewnienia im odpowiedniego technologicznego wsparcia. Dlatego coraz więcej zwolenników tej metody, będzie chciała przenieść się do chmury. Cloud computing w sojuszu z open source może zredukować utrzymywaną infrastrukturę serwerową i zmniejszyć koszty. Natomiast deweloperzy mogą zyskać większą niezawodność i skorzystać z redundancji serwerów.
10. Blockchain wesprze transakcje B2B
Już niebawem programiści będą musieli skupić się także na wdrożeniu technologii blockchain w tradycyjnych usługach finansowych. Biznes coraz bardziej dostrzega, że technologia, która do tej pory zyskiwała popularność głównie na rynku wirtualnych walut, może także w obszarze klasycznych finansów zagwarantować bezpieczeństwo, niezawodność i większą wydajność. Zapewnia też większy poziom automatyzacji eliminując sporo pracy manualnej. Integracja blockchain z firmowymi systemami pozwoli samym programistom efektywniej szukać rozwiązań wspierających biznes. Firmy, takie jak Oracle już pracują nad rozwojem systemów opierających się na blockchain i usprawniających wewnętrzne procesy.
Jerzy Suchodolski, Sales Consulting Director w Oracle