Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
SMB Chmura Obliczeniowa
Michail Mokkas
2
Chmura obliczeniowa Model udostępniający zasoby (serwery, dane, aplikacje) w sieci Stwarza iluzję nieskończonych zasobów dostępnych na żądanie Umożliwia naliczanie opłat za korzystanie z ww. zasobów (nie płacimy za niewykorzystane zasoby)
3
Historia 1950 – mainframe-thin client: użytkownicy mogli korzystać ze współdzielonych zasobów (głównie CPU) 1960 – wiele spekulacji na temat przyszłości obliczeniowej, głównie bazujące na małej ilości „mainframeów” i dużej „dumb terminals”. Pomysł, że cały świat mógłby wykorzystywać tylko 15 centrali danych. 1990 – popularyzacja sieci Internet i współdzielania informacji pomiędzy oddalonymi od siebie komputerami. Amazon usprawniła swoje centra danych używające tylko 10% pojemności, by zostawić miejsce na okresowe zawahania. Powstał pierwszy wzór architektury chmury obliczeniowej. Wystartował Amazon Web Services (AWS). 2008 – Eucalyptus: pierwsza kompatybilna z AWS API platforma do tworzenia środowisk chmur obliczeniowych. Rusza także Google App Engine (w wersji beta). Obecnie - szeroka dostępność wydajnych sieci i tanich komputerów oraz urządzeń przechowujących dane jak i ekspansja wirtualizacji sprzętowej oraz architektury bazującej na usługach przyczyniły się do szybkiego I znacznego rozwoju chmury obliczeniowej.
4
Tradycyjne usługi vs Chmura
Komunikacja z usługami a nie ze szczególnym urządzeniem/sprzętem Przeniesienie wszystkich świadczeń usług IT na serwer Umożliwienie stałego dostępu do nich Szybkość procesów wynika z mocy obliczeniowej serwera
5
Dlaczego na mobilne? Pozwala na zlecenie bardziej złożonych obliczeń zewnętrznej usłudze oszczędzając w ten sposób własne zasoby systemowe Umożliwia przetrzymywanie oraz udostępnianie dużej ilości danych, nie zapełniając lokalnych nośników Udostępnia dodatkowe usługi, które mogą wspomagać naszą aplikację
6
Rodzaje Rodzaje wdrożeniowe chmur (według NIST*): Prywatne (private)
Wspólnotowe (community) Publiczne (public) Hybrydowe (hybrid) *National Institute of Standards and Technology
7
Prywatne Infrastruktura chmury działająca jedynie dla pojedynczej organizacji. Może być zarządzana przez tę organizację lub osobę trzecią i być hostowana wewnętrznie lub zewnętrznie. Korzystają z niej jednostki biznesowe (działy) firmy. Może ułatwić procesy biznesowe, jednak jest potrzebne zaangażowanie w jej poprawne wdrożenie. Zwykle nie posiada elementu finansowego, z którego chmury słyną.
8
Wspólnotowe Infrastruktura chmury wykorzystywana jest przez wspólnoty lub organizacje, które posiadają wspólne cele/misje. Jest zarządzana przez kombinację organizacji wchodzących w skład wspólnoty lub osobę trzecią.
9
Publiczne Usługi są dostępne w sieci publicznej.
Zasoby sprzętowe nie są dedykowane pod poszczególnych klientów korzystających z usług firmy dostarczającej chmurę. Klient określa, jakie parametry go interesują i płaci dokładnie za to, co zamówił. Klient także może w każdej chwili zwiększyć lub zmniejszyć zasoby w dzierżawionym przez siebie środowisku. Zmiany zostaną zastosowane natychmiast, bez potrzeby zatrzymywania pracujących aplikacji i maszyn wirtualnych.
10
Hybrydowe Połączenie dwóch lub więcej z poprzednich
Część usług i infrastruktury klienta pracuje w chmurze publicznej a inna część w prywatnej lub wspólnotowej
11
Modele Istnieje wiele klasyfikacji chmur obliczeniowych
Najpopularniejsze to: IaaS (Infrastructure as a Service) PaaS (Platform as a Service) SaaS (Software as a Service) NaaS (Network as a Service) MBaaS (Mobile backend as a service) DBaaS (Database as a Service)
12
Hoteling/Kolokacja Udostępniane nam jest miejsce w serwerowni, prąd, klimatyzacja i dostęp do internetu My kupujemy sprzęt, zabezpieczenia, system operacyjny, oprogramowanie oraz aplikacje My także tym wszystkim zarządzamy Płacimy jedynie za dzierżawę miejsca w serwerowni
13
IaaS Dostarcza klientowi infrastrukturę informatyczną (sprzęt oraz serwisowanie) My dostarczamy system operacyjny, oprogramowanie oraz aplikacje Najczęściej wykorzystuje się maszyne wirtualną, którą dostawca może przenosić na mniej obciążone fizycznie serwery Płacimy za faktycznie zużytą moc obliczeniową serwerów Przykłady: Amazon Elastic Compute Cloud (EC2) oraz Azure Virtual Machines
14
PaaS Dostajemy gotowy i dostosowany do naszych potrzeb komplet aplikacji Nie martwimy się o system operacyjny a jedynie zajmujemy się pisaniem i utrzymaniem aplikacji Klient ma dostęp do interfejsu poprzez program kliencki (zazwyczaj przeglądarkę) Płacimy za zużycie zasobów (czas procesora, miejsce na dysku, liczbę zapytań i transfer danych) Przykłady: Google AppEngine, Microsoft Azure
15
SaaS Mamy zapewniony sprzęt, system operacyjny oraz finalną aplikację
My korzystamy tylko z funkcjonalności danej aplikacji Nie mamy wpływu na rozwój aplikacji Zwykle wiąże się z opłatą każdego użytkownika za miesiąc jej użytkowania Przykład: Google Apps, SkyDrive, Hotmail
16
NaaS Zapewnia nam usługi związane z transportem sieciowym
Zazwyczaj wiąże się z wirtualizacją sieci i ich dzierżawą poprzez wykorzystanie protokołów, jak np. OpenFlow
17
MBaaS (Baas) Otrzymujemy zaplecze potrzebne nam do realizacji funkcjonalności i zadań w środowisku mobilnym. Najczęściej jest to wsparcie w postaci zdalnej bazy danych, notyfikacji typu "push", integracji z usługami online (w tym sieci społecznościowych) Przykład: Firebase, CloudKit, Azure Mobile services, Parse (open source)
18
DBaaS Udostępnia bazę danych i umożliwia jej zarządzanie.
Model danych w dwóch wariantach: SQL: Oracle MySQL Cloud Service MariaDB Platform Managed Database Service Heroku PostreSQL as a Service Google Cloud SQL NoSQL: (skalują się lepiej w środowisku chmurowym) Oracle NoSQL Database Cloud Service MongoDB Database as a Service Google Cloud Datastore
19
X/EaaS X = jakakolwiek usługa E = everything Usług przybywa
RaaS (Research as a Service) CaaS (Communication as a Service) GaaS (Games as a Service) SaaS (Security as a Service) ...
20
Zalety Zwiększone możliwości Zwiększona wydajność Mniejsze koszty
Łatwa skalowalność Pozwala skupić się na bardziej kreatywnych aspektach naszej pracy
21
Wady Bezpieczeństwo danych
Obawy dotyczące dostępności danych i aplikacji Uzależnienie od dostawcy usług chmury obliczeniowej
22
Google Cloud Platform Zestaw usług chmurowych od Google.
Dostarcza środowisko typu IaaS oraz PaaS. Usługi Google-a korzystają z tej samej infrastruktury (np. wyszukiwarka Google Search oraz YouTube). Obecnie w jego skład wchodzi ponad 90 usług z obszaru: obliczeniowego, baz danych i magazynowania danych, sieci, Big Data, AI, bezpieczeństwa, IoT i innych Pierwszą usługą chmurową wchodzącą w skład GCP jest Google App Engine. źródło obrazka: medium.com
23
GAE Google App Engine: platforma chmury obliczeniowej wykorzystywana do hostowania aplikacji webowych na serwerach Google’a Oferuje możliwość skalowania wymaganych zasobów dla potrzeb działających w niej usług/aplikacji Jest to platforma jako usługa (PaaS) Wchodzi w skład produktów oferowanych przez Google Cloud Platform (GCP)
24
Wspierane języki Aktualnie można pisać aplikacje w językach:
Python (w tym framework Django i inne) Java (w tym Java Server Pages i inne) PHP Ruby Go Node.js Ewentualnie można skorzystać z opcji “Custom Runtime”, który umożliwia pisanie w dowolnym języku wspierającym żądania HTTP
25
Restrykcje Otrzymujemy wgląd (read-only) do systemu plików na App Engine App Engine może wykonywać polecenia otrzymane wyłącznie za pośrednictwem zapytań HTTP Aplikacje Javowe mogą korzystać tylko z części listy wszystkich klas dostępnych w standradowej edycji JRE
26
Firebase Platforma wykorzystywana do budowy aplikacji mobilnych oraz webowych. Wcześniejsza wersja (Envolve) umożliwiała aplikacjom dodawanie funkcjonalności czatu. Była jednak wykorzystywana często do synchronizacji i przesyłania informacji, które nie były zwykłymi wiadomościami komunikatora. W 2011 roku nastąpił podział firmy co skutkowało powstaniem Firebase. Przejęta przez Google w 2014 r. Wieloplatformowa (m.in. Android, iOS)
27
Firebase - Usługi Niektóre z usług jakie oferuje Firebase:
Realtime Database – baza danych (posiada REST API) Authentication – uwierzytelnienie użytkowników po stronie klienta (można korzystać z social login providerów jak m. in. Facebook czy Google) Cloud Functions – rozszerza aplikację o backendowe możliwości wykorzystując m. in. Google Cloud Services Hosting – umożliwia hostowanie stron (plików HTML, CSS, Javascript i innych) Google Analytics – daje wgląd do informacji dotyczących użytkowania aplikacji i statystyk dotyczących interakcji użytkowników. Cloud Messaging – stosowane w celu tworzenia notyfikacji oraz rozsyłania informacji. AdMob – tworzenie reklam w celu uzyskania źródła dochodów w naszej aplikacji.
28
Korzystanie z Firebase
Kroki: Zarejestrować konto na: Dodać projekt Przepisać “package name” naszej apki Wygenerować SHA-1 keytoolem Zarejestrować apkę i ściągnąć google-services.json Zmodyfikować pliki gradlowe według wskazówek na stronie (po rejestracji) Zmodyfikować reguły Realtime Database. Z poziomu Android Studio jest dostępny assystent, który pomaga z całym procederem.
29
Korzystanie z Firebase – kroki 2
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion buildToolsVersion "29.0.2" defaultConfig { applicationId "com.example.personapp" minSdkVersion targetSdkVersion versionCode versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.firebase:firebase-database:19.2.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' }
30
Korzystanie z Firebase – kroki 3
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
31
Uwierzytelnianie w Firebase
Należy dodać następującą zależność w build.gradle : FirebaseAuth - klasa zarządzająca uwierzytelnianiem w Firebase. implementation 'com.google.firebase:firebase-auth:19.1.0' public class MainActivity extends Activity { private FirebaseAuth fa; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fa = FirebaseAuth.getInstance(); } }
32
Uwierzytelnianie w Firebase - rejestracja
fa.createUserWith AndPassword(et_user.getText().toString(), et_pass.getText().toString()) addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void Task<AuthResult> task) { if (task.isSuccessful()) { FirebaseUser user = fa.getCurrentUser(); } else { Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } } });
33
Uwierzytelnianie w Firebase - logowanie
fa.signInWith AndPassword(et_user.getText().toString(), et_pass.getText().toString()) addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void Task<AuthResult> task) { if (task.isSuccessful()) { FirebaseUser user = fa.getCurrentUser(); } else { Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } } });
34
Uwierzytelnianie w Firebase - informacje o użytkowniku
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { String name = user.getDisplayName(); String = user.get (); Uri photoUrl = user.getPhotoUrl(); boolean Verified = user.is Verified(); String uid = user.getUid(); Task<GetTokenResult> tr = user.getIdToken(false); //autorefresh }
35
Realtime Database - dane
Dane w RTDB są trzymane w postaci obiektów JSON. Tworzą one strukturę drzewa. Przykład: { "users": { "user1": { "name": "Michail Mokkas", }, }, "products": { "product1": { "name": "Mleko", } } }
36
Realtime Database - uprawnienia
Wymaga uprawnień do czytania/edycji dla użytkowników z urpawnieniami. Można jednak ustawić na publiczne: Ewentualnie tylko dla zalogowanych użytkowników: { "rules": { ".read": true, ".write": true } } { "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
37
Realtime Database - obiekt bazy oraz zapis
FirebaseDatabase - klasa, której obiekty reprezentują rtdb. DatabaseReference - referencja do lokacji danych w bazie. Otrzymujemy obiekt reprezentujący bazę poprzez wykorzystanie metody FirebaseDatabase.getInstance() Do zapisu danego obiektu w bazie, wymagany jest obiekt reprezentujący referencję w bazie. Referencję otrzymujemy poprzez metodę getReference("Klasa obiektów") na wczesniej uzyskanym obiekcie FirebaseDatabse. Następnie możemy już zapisać nasze dane poprzez metodę setValue(moj_obiekt) na referencji bazy.
38
Przykład zapisu public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FirebaseDatabase db = FirebaseDatabase.getInstance(); DatabaseReference ref = db.getReference("objects"); DatabaseReference ref_num = db.getReference("objects/numbers"); DatabaseReference people_dr = ref.child("people"); List<Person> lp = new ArrayList<>(); lp.add(new Person("John","Smith",47)); lp.add(new Person("Maria","Sikora",23)); lp.add(new Person("Tom","Wang",36)); people_dr.setValue(lp); DatabaseReference string_dr = ref.child("strings"); HashMap<String,String> ls = new HashMap<>(); ls.put("String1","String of text1."); ls.put("String2","String of text2."); string_dr.setValue(ls); db.getReference("objects/numbers/0/integer").setValue(68); } }
39
Przykład zapisu (console)
40
Realtime Database - uprawnienia przykład
mAuth.signInWith AndPassword(et_user.getText().toString(), et_pass.getText().toString()) addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void Task<AuthResult> task) { if (task.isSuccessful()) { FirebaseUser user = mAuth.getCurrentUser(); Toast.makeText(context,user.get ()+" logged on", Toast.LENGTH_SHORT) .show(); } else { Log.w("tag", "Failed to log in.", task.getException()); } } }); FirebaseDatabase db = FirebaseDatabase.getInstance(); DatabaseReference ref = db.getReference("users/"+mAuth.getUid()); DatabaseReference people_dr = ref.child("people"); List<Person> lp = new ArrayList<>(); lp.add(new Person("John","Smith",47)); lp.add(new Person("Maria","Sikora",23)); lp.add(new Person("Tom","Wang",36)); people_dr.setValue(lp);
41
Realtime Database - uprawnienia przykład
42
Realtime Database - odczyt
Aby nasze dane w bazie były uaktualniane w czasie rzeczywistym, powinniśmy dodać ValueEventListener do naszej referencji. Metoda onDataChange() jest wykonywana kiedy nasz listener jest dodany i za każdym razem kiedy nastepują zmiany w danych. W razie błędu zostanie wywołana metoda onCancelled().
43
Przykład odczytu FirebaseDatabase db = FirebaseDatabase.getInstance(); DatabaseReference ref = db.getReference("objects/people"); ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) { String name = (String) messageSnapshot.child("name").getValue(); String surname = (String) messageSnapshot.child("surname").getValue(); int age = ((Long)messageSnapshot.child("age").getValue()).intValue(); Log.i("tag",name+" "+surname+" "+age ); } } @Override public void onCancelled(DatabaseError databaseError) { Toast.makeText(context, databaseError.getDetails(), Toast.LENGTH_LONG).show(); } });
44
Realtime Database - dodaktowe metody i interfejsy
DataSnapshot - reprezentuje dane z lokacji w bazie. push() - dodaje dane i zwraca klucz, który jest potrzebny do dodania kolejnych danych ChildEventListener - interfejs, który jest wykorzystywany do otrzymywania zdarzeń na temat zmian w potomnych lokacjach danego DatabaseReference. onCancelled() - metoda ta wykona się, jezeli pojawił się błąd po stronie serwera lub zostały zmienione uprawnienia. onChildAdded() - metoda ta wykona się, jeżeli pojawi się nowa lokacja potomna. onChildChanged() - metoda ta wykona się, jeżeli dane w lokacji potomnej się zmieniły onChildMoved() - metoda ta wykona się, jeżeli priorytet lokacji potomnej się zmieni. onChildRemoved() - metoda ta wykona się, jeżeli lokacja potomna zostanie usunięta.
45
Firebase - przykład (Baza ludzi)
46
Firebase – przykład kont. 1
47
Firebase – przykład kont. 2
48
Rezultat - apka
49
Rezultat na stronie
Podobne prezentacje
© 2025 SlidePlayer.pl Inc.
All rights reserved.