Lesson 3: Service Oriented Architectures & Cloud Computing Flashcards
What were some architectural issues with how they designed distributed systems in the old days?
- data redundancy
- synchronization problems
- vendor and application “lock in”
What were some integration issues with how they designed distributed systems in the old days?
- isolated data silos
- administrative nightmare
- integration/customization nightmare
Which software engineering approaches were an inspiration on the renew design of distributed systems?
- Object-oriented design
- Component-oriented design
- Service orientation
Describe the object-oriented software engineering approach.
- based on mental model of actual of imagined objects
- modelling real-world environments
Describe the component-oriented software engineering approach.
- focus on separation of concerns
- split into loosely coupled reusable components
Describe the service-orientation software engineering approach.
- foundation in component-oriented design
- component = service
- service is often interchangeable & stand-alone
What is a service?
- Physical independent software program
- loosely coupled
- distinct design characteristics
- capabilities are often defined in terms of a contract
What is a SOA?
Service Oriented Architecture.
It is an approach to designing systems, a set of design principles. It is a way of thinking about a problem, a mindset.
Explain the service-oriented part of SOA
Service-oriented: the core unit of design is a service
(implementing a capability so that it can be easily consumed
Explain the ‘architecture’ part of SOA
Architecture = style of design
What is SOA from a technical perspective?
An architecure for designing systems.
-> a service exposes a discrete capability, any application that needs the capability uses the service
A service exposes its capability via an interface
Compare a SOA against an application-centric design perspective
- monolithic application silos
- duplication of functionality
Give the full detailed definition of SOA
A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations.
What is a multi-tenancy?
A single instance of the software runs on a server, serving multiple client-organizations.
What types of multi-tenancy are there?
- Data multi-tenancy
- Application multi-tenancy
Why do we need SOA?
- allows multi-tenancy
- promotes reusability
- promotes exchangeability
What are the differences between data and application multi-tenancy?
!!!!!! Fill in later
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
What is cloud computing? Give the definition?
Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
What are some characteristics of IT services as a utility?
- On-demand access to resources
- Elasticity
- Pay-per-use
What are the key differences between traditional in-house IT and X as a Service?
Traditional in-house IT has
Cash up front
24/7 use
Limited Capacity
Long Lead Time
while X as a Service has
Pay as you go
Metered use
‘infinite’ capacity
Short lead time
Explain Software as a Service.
It delivers special-purpose software that is remotely accessible by consumers through the Internet with a usage-based pricing model.
What are some characteristics of using a provider’s application as a service?
Limited user-specific application configuration
Accessibility through tin clients on various devices
Automated upgrades and patching
Explain Platform as a Service
It offers a high-level integrated environment to build, test and deploy custom applications. Generally, developpers will need to accept some restrictions to the type of software they write in exchange for built-in application scalability.
Increased efficiency at cost of lock in
Explain Infrastructure as a Service.
It provisions hardware, software and equipment to deliver software application environments with a resource usage-based pricing model. The resulting infrastructure can scale up and down dynamically based on application resource needs.
What are the characteristics of the application development environment of Platform as a Service?
Provider-constrained components and languages
Specific use cases
Speedup development & deployment process
Automated application scaling
What increases in this direction?
IaaS -> PaaS -> Saas
provider control, transparency and efficiency
What increases in this direction?
IaaS <- PaaS <- SaaS
standardization and interoperability
What are the 3 main enablers?
- Virtualization Technology & Standards
- Web Service Technology & Standards
- Large capital investments by major players & economies of scale
What are the three payment models, seen in class?
- Per-instance billing: pay for every hour a VM is used (you pay for idle machines)
- Reserved usage: up-front payment & reservation, lower rates
- Bidding: you define a maximum instance price, price varies on the load of the cloud
What are characteristics of a public cloud?
Publically shared virtualized resources
Supports multiple customers
Supports connectivity over the internet
Suited for less confidential information
What deployment models are there?
- public cloud
- community clouds (hosted by several organizations)
- hybrid clouds, combinations of above