59ο DotNetZone event - Το Azure δεν είναι χορτοφάγο.
Το Azure είναι κατάλληλο:
- Για φτηνό Hosting
- Μόνο για startups
- Για περιστασιακή χρήση
- Να σηκώσει ολόκληρη την παραγωγή οποιασδήποτε επιχείρησης
Μόνο μία απάντηση είναι σωστή. Κι όμως, οι περισσότερες εισαγωγικές παρουσιάσεις για Azure δίνουν την αντίθετη εντύπωση, ακόμα και ότι για σοβαρές εγκαταστάσεις καλύτερες είναι ... Antagonistikes Υπηρεσίες.
Ξεκινώντας από ένα όχι και τόσο υποθετικό παράδειγμα, ενός online travel agency του ευρωπαϊκού Top ten, θα δούμε:
- Ποιες είναι οι ανάγκες μιας επιχείρησης
- Πως καλύπτονται από τις υπηρεσίες που παρέχει το Azure
- Πως συγκρίνεται το Azure με Antagonistikes Υπηρεσίες.
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
1. Το Azure Δεν είναι
χορτοφάγο
ΠΑΝΑΓΙΩΤΗΣ ΚΑΝΑΒΟΣ
DOTNETZONE MODERATOR
59ο DotNetZone Event
2. Το Azure είναι …
Φτηνό Hosting
Για startups
Για περιστασιακή χρήση
Για να στηρίξει mobile apps
Ικανό να σηκώσει ολόκληρη την παραγωγή μίας επιχείρησης
4. Online Travel Agency (Μεγάλο)
Ευρωπαϊκό Top 10, 3η στη Ρωσία
Εκατομμύρια αναζητήσεις/μέρα
Χιλιάδες πωλήσεις/μέρα
~ 5 Billion Events/year
Μερικά εκατομμύρια/μέρα
50+ servers
Δεκάδες εφαρμογές, services
Διάρκεια αναζήτησης: ~6 sec
10 sec = The china syndrome
5. Μία απλή αναζήτηση
Web Site Back End
GDS
ΑΤΗ – SKG
21/3 – 5/4
WS
Request
Search time 1-6sec
Response
100-300 results
2 MB
Parse
Trim junk
Price
Add extra info (punctuality, reliability)
Build out/return combinations
REST
call
Recommendations
Render
6. Μία απλή κράτηση
Web Site Back End
GDS
OA1234
Φουφουτόπο
υλος
Reservation
Request
Record reservation
Start cancellation timers
REST
call
Display
Reservation info
7. Μία απλή πληρωμή
Web Site Back End
GDS
OA1234 ..
Issue Ticket
Payment call
Display ticket info
Payment
Gateway
Πληρωμή με
πιστωτική
Approval code
CRM
8. Η Αρχιτεκτονική
Front end web sites
Ruby
ALT.NET κανείς ?
Αναζητήσεις, κρατήσεις πληρωμές
Πολλαπλά Backend services σε .ΝΕΤ
REST API
Integration με third parties
Mobile Apps
Background batch jobs
Ακυρώσεις
Ανανεώσεις κρατήσεων …
Όχι Microservices, Lots of services
9. Integration με τρίτους
GDS – Αυτοί που πουλάνε τα εισιτήρια
Ας πούμε Web Services
Βαρύ payload μπόλικο processing
Payment Gateways
Payments μέσω web services
Financial Reports σε οτιδήποτε (WS, flat files, screen scraping)
Αεροπορικές
Κυρίως financial
IATA
10. Η υποδομή
Front End Web Servers
Backend Services
Batch Jobs
CRM
Load Balancer
Redis Cluster
Couchbase Cluster MySQL
SQL Server
SNS
SQS
11. Οι προκλήσεις
Μεγάλος αριθμός αναζητήσεων
Ενδοεπικοινωνίες συστημάτων
End-to-End παρακολούθηση κράτησης
Συνεχής εξέλιξη
Ασταμάτητη αλλαγή
12. Γιατί Cloud;
Αξιοπιστία
Κι αν πλημμυρίσει το data center;
Κεραυνός στον ουδέτερο
Ατυχείς πρωτοβουλίες
Μακαρονάδα
Κι ας είναι ακριβότερο, είναι φθηνότερο
< 5 IT
20+ Developers
DevOps!
You build it, you deploy it
14. Ενδοεπικοινωνίες
Πολλά services
Από CRM μέχρι τρέχουσες ισοτιμίες
Αποφυγή tight coupling
Κι αν είναι κάτω;
Deployment
Fault
Meltdown
15. Ενδοεπικοινωνίες – Λύσεις
Publish/subscribe
Queued delivery
Συνήθως τα ίδια προϊόντα on premises
Διαφορετικές υπηρεσίες στο Cloud
Διαφορετικά lifetimes, persistence
16. Queues και Pub/Sub
Hosted Queues
Persistent
Rabbit MQ
In Memory
Zero MQ, Redis Lists και blocking
Και queueing και pub/sub στο ίδιο σύστημα
Χρειάζονται VMs
AMQP protocol – συμβατότητα με Azure
Service Bus
Εναλλαξιμότητα ?
Cloud Services
Pub/sub με Amazon SNS/Azure Service Bus
Καλό για microservices, REST APIs
Queueing με Amazon SQS/Azure Queues
Κόλλα και σπάγκος
Δεν χρειάζονται VMs
17. Πολλαπλά συστήματα
Best of breed
Managed ή VM;
Κόστος;
Διαθεσιμότητα;
Διαχείριση;
Κόστος αδειών (ακόμα και για open source)
18. Managed
Μικρότερο διαχειριστικό κοστος
Χωρίς άδειες
Διαθεσιμότητα
Scalable
Pay as you go
Ακριβότερο operation σε μεγάλη χρήση
SaaS για developers ?
19. VM deployment
Φθηνότερη χρήση σε αρκετές περιπτώσεις
Up front cost vs pay per use
Μπελάδες και πονοκέφαλοι
Κόστος διαχείρισης
Ευθύνη για availability, recovery
20. Πολλά VM
Πολλαπλά λειτουργικά
Linux
Windows
Καλύτερα βαρύτερο VM παρά πολλά μικρά
Azure Web Sites, Web Roles θέλουν το αντίθετο
Ανάγκη για
Αυτοματοποιημένο Deployment
Cross platform monitoring
Containers και Docker!
21. Docker ?
Application Isolation μέσα σε containers
Κάθε App βλέπει το δικό του περιβάλλον, hardware resources
Κάθε container μπορεί να κάνει reference άλλα containers
Περίπου σαν package dependencies
Εύκολο να κάνεις deploy πολλές εφαρμογές σε ένα VM
Δεν χρειάζεσαι ένα VM Image με-απ-όλα
Μα δεν το είχαμε αυτό στα mainframes του `80?
22. Πολύ processing
GDS responses ακόμα και 2 MB
Mainframe-style communications
Χεράτη διαχείριση συνδέσεων
Parsing, pricing
Πολύ CPU
Αποφυγή dumb processing όσο γίνεται
Οι γκάφες κοστίζουν
24. Server Meltdown - 1
Load Balanced φάρμα
Μεγάλος φόρτος
Πρώτος server κολλάει στα 100% CPU
Timeouts, App pool Recycle
Περισσότερα requests στους υπόλοιπους server
Ο δεύτερος server φτάνει 100%
Κάτσε κάτω από τη μπάρα!
…
25. Server Meltdown - 2
Το αυτόματο scale out *μπορεί* να βοηθήσει
Αν υπάρχει μεγάλος φόρτος
Μπορεί να βλάψει
Αν οφείλεται σε γκάφα
26. Ζέσταμα
Δεν αρκεί να σηκώσεις ένα VM ή Site
Ζέσταμα local cache
Άνοιγμα συνδέσεων με GDS, Databases
Μεγάλο CPU στο VM Αργή απάντηση network layers
Timeouts χωρίς καν σύνδεση
Network virtualization matters!
Amazon only issue?
27. Δεδομένα
Διαφορετικές ανάγκες
Μεγάλες και ακριβές αναζητήσεις, δεν σπάνε
Κρατήσεις, πληρωμές = κλασσικό OLTP
Reference data
Αεροδρόμια, Αεροπορικές, Προορισμοί
Logs και events
28. Δεδομένα – Λύσεις
Document databases
Memcache, Redis για reference δεδομένα, volatile data
Κλασσικό OLTP
29. Caching
Ακριβά searches
Αλλά και μεγάλα DTOs
Πολλά Reference data
Πολλοί servers/ clients
Μεγάλο traffic - > μεγάλο κόστος lookup
Συγχρονισμός μεταξύ servers
Μα πότε άλλαξε η τιμή;
30. End-to-End παρακολούθηση
Γίνεται και με Events, Logs
Όχι ό,τι ωραιότερο
Workflow
Απλουστεύει τον κώδικα και τα services
Διευκολύνει failure handling, timeouts, compensations
Orchestration μεν φτάνει να μην είναι βαρύ σαν συμφωνική ορχήστρα
Sagas αλα NServiceBus
Μάλλον το καλύτερο
Έξτρα framework
31. Deployment & Automation - 1
Windows Group Policies
Ένα λειτουργικό
Πολλά μηχανήματα
Drop-in deployments
Ανεξάρτητα πακέτα
Το αντίστροφο
Δεκάδες servers
Διακριτοί ρόλοι
Πολλαπλά βήματα
Αλληλεξαρτήσεις
Πολλά Λειτουργικά
Rollout waves
32. Deployment & Automation – Puppet,
Chef
H Microsoft λατρεύει τα Puppet και Chef!
Declarative ορισμός του configuration
VMs, services, accounts
Περιγραφή σε Ruby
Cross platform
Windows Specific
Octopus Deploy
33. Monitoring
Διαφορετικές μορφές
Admins want Performance Counters
Devs want Log records
Biz want business events
Different systems
34. Big data
>1 εκατομμύριο search τη μέρα
50000000000 events το χρόνο
Κάθε αναζήτηση, κράτηση προκαλεί πολλαπλά events
Logs σε κάθε βήμα
Ανάγκη για
Document DBs
Blob storage
Splunk για log processing
35. Internet of Things ?
Δεν είναι ένα app που μιλάει με ένα server
Χιλιάδες συσκευές χωρίς UI που στέλνουν συνέχεια events
«Μερικοί» servers που στέλνουν εκατοντάδες events το δευτερόλεπτο
38. Ενδοεπικοινωνίες – Βασική ιδέα
Κάθε “service” ορίζει ένα topic ή queue
Οι clients κάνουν post στο queue
Τα Azure Service Bus queues έχουν ένα subscriber
Topics – πολλοί subscribers
Azure Ta Storage Queues απαιτούν polling
Αλλά είναι πιο γρήγορα
Scale out με το μέγεθος του Queue
39. Ενδοεπικοινωνίες - Υπηρεσίες
Azure Service Bus Queues/Topics
Pub/Sub
256ΚΒ per message, 5 GB per topic, indefinite lifetime
Slower than Storage queues
AMQP συμβατό με άλλα queue services!
Δεν έχει retries
Azure Service Bus Relay
Επικοινωνία με on-premises! (λογιστήριο)
Azure Storage Queues
64KB per message, 7 days lifetime
Επιτρέπει retries
Γρηγορότερο
Κόστος?
Βγάλε άκρη
41. Azure SQL Database
Σχεδόν Enterprise στην V12 Preview (Premium)
Table Partitioning
Online Indexing
Columnstore Indexes
Τρέμε Redshift …. Ας πούμε
Γενικώς
Windowing functions
Change Tracking
500 GB max. Not quite IoT scale big data
Cloud only extras!
Row-level security
Data Masking
42. Azure SQL Database Scale Out
Elastic Scale
Sharding
NOT the same as clustering
I hear voices ….
43. Azure DocumentDB
Δεν είναι MongoDB δεν είναι RavenDB
Docs as Json objects
Fully indexed
Κατάλληλη για BI σενάρια
Αποθήκευση των «raw» events ως docs αντί να τα πετάμε
Νέα επεξεργασία όταν αλλάξουν οι απαιτήσεις/διαδικασίες
Όριο 512KB για την ώρα
Ακατάλληλο για search result caching (maybe)
Κατάλληλο για τις περισσότερες άλλες περιπτώσεις
44. Caching
Redis!
Recommended for all new development
In memory
Clustered
Rich types
Lists
Dictionaries
Atomic operations
Pub/sub μέσω blocking
Lua scripting
Transactions!
No persistence
45. Πολλαπλά συστήματα
Ποικιλία Linux
Docker στa Linux, έρχεται και για Windows
Κυρίως PaaS, όχι τόσα managed applications
Long running services μέσω
Worker Roles
Web Jobs
Ή πολλά services σε ένα VM?
46. Deployment
Step by step
Azure Automation
Powershell scripts
Worklflow
Συνεργάζεται με Puppet, Chef
Ώρα για ζέσταμα!
Declarative
Powershell DSC
Puppet/Chef
Τα θέλουμε και τα δύο
Cross platform
OneGet
Κλασσικό Package management
αλα rpm
47. Event Processing
Internet of Things Scale
Millions per second
Event Streams
Event Hubs
Κατάλληλο για Infrastructure monitoring
Χρησιμοποιείται από το εσωτερικό IT της Microsoft
48. Machine Learning
Ίσως το δυνατότερο προτέρημα
Machine Learning Studio
Hadoop
Python
R – η δημοφιλέστερη γλώσσα για στατιστικά
Εξαγορά της Revolution Analytics
Batch Processing μεγάλου όγκου
49. Night of the howling machines!
Models as REST services
REAL TIME!
Δένει με Event Processing
Recommendations
Fraud detection
Anomaly detection
Attack detection και αντιμετώπιση
50. Events & Machine Learning
Νι Χάο Πεν Γιου
Εντοπισμός ανώμαλων κλήσεων
Αναγνώριση
Αντιμετώπιση
Redirect σε άλλους server
Αλλαγή κανόνων σε load balancer, IP restrictions
51. Business Intelligence
Power BI μέσω Office 365
Hosted BI, reporting στο ίδιο σύννεφο
Άρα γλυτώνεις το bandwidth cost
Χωρίς πονοκεφάλους για πρόσβαση χρηστών, VPNs
52. Αγορά και αδειοδότηση
Pay as you go ή μπροστά
Ακόμα δεν έχει auctions (νομίζω)
Παίζει όμως ακόμα σε licensing πακέτα
Μπορείτε ακόμα να ζητήσετε έκπτωση
Και να πονοκεφαλιάσετε με το τι συμφέρει
54. Azure vs Amazon
Azure
Καλύτερο PaaS
Βάζει Docker
Το καλύτερο Docker για Windows
Managed Υπηρεσίες
Άριστο Integration με on-premises
Amazon
Καλύτερο IaaS
Έχει ήδη Docker
Όχι όμως για Windows
Managed Εφαρμογές
Έχει ήδη πολλά
On-Prem ?
55. Pub/Sub και Queues
Azure
Polled queues
Καλύτερο Pub/Sub
Service Bus - indefinite lifetime
Service Bus integration με on-premise
συστήματα
AMQP
χρήση διαφορετικών queues
Amazon
Polled queues
SNS κρατάει τα μηνύματα μέχρι 1 ώρα
Ανάγκη για Queue subscriptions και
polling
56. Full featured database
Γρήγορο insert σε columnstores
Δεν έχει clustering
Autoscale
Αλλά δεν είναι το ίδιο
SQL Database vs Redshift
SQL Database Redshift
Έχει clustering=Θέλει clustering
Ειδικευμένου σκοπού
Γρήγορο bulk insert
ΑΑΑΡΡΡΓΓΓΟΟΟ row-by-row
59. Workflows and Orchestration
Azure
Biztalk Services
Complex, Orchestration
Connectors and EDI, oh my!
Πληρωμή με την ώρα
Self-hosted Workflow Foundation
In-process ή AppFabric
Simple Workflow Service
Simple, workflow
Πληρωμή με την εκτέλεση, χρόνο
διατήρησης του record
Κάποια στιγμή πρέπει να σβηστεί
60. Αγορά
Azure
Ασκήσεις επί χάρτου
Και σε licensing πακέτα για on prem
Μπορείτε να ψήσετε τον account
manager
Πονοκεφάλιασμα με τα licenses
Amazon
Ασκήσεις επί χάρτου
Licensing? Τι’ν’τουτ?
Ο Account manager είναι στις
Μπαχάμες
Πονοκεφάλιασμα με τα auctions