Upload
olafur-andri-ragnarsson
View
635
Download
1
Tags:
Embed Size (px)
DESCRIPTION
In this first lecture we look at the state of the industry and specifically the post-pc era that follows the digital decade. The PC is not the center anymore and we as architects need to create solution that are long lasting and usable on any device. Creating software systems is hard. Fortunately, as system architects we have many methods to build upon and in this lecture we will explore those building blocks. We also look at the evolution of software architectures and the importance of service oriented architecture
Citation preview
Lecture 01Enterprise Application Architecture
Agenda The Post-PC era Enterprise Application Building Blocks Service Oriented Architecture Layering
Reading Fowler Introduction,1 Layering Service Oriented Architecture Software as a Service Steve Yegge’s Rant
The Post-PC era
1960 1970 1980 1990 2000 2010
Mainframes
Mini computers
Personal Computers
Servers
Clusters
Cloud – utility computing
Laptops
Music player2G Cell phones
CONVERGE
DIVERGESmartphones
Tablets
Smart TV
Internet of things
2000 2010
THE DIGITALDECADE
“[The Personal Computer] can become the 'Digital Hub'
of our emerging digital lifestyle, adding tremendous value
to our other devices.”- Steve Jobs, 2001 Keynote
introducing the iPod
THE DIGITALDECADE
2000 2010
THE DIGITAL DECADE
MUSIC
PICTURES
VOICESMARTPHONES
TV SHOWS
MOVIES
BOOKS
WHAT HAPPENEDAT THE END OF THEDIGITAL DECADE?
1981-2011 The era of the PC
THE PC IS JUST ADEVICE
2000 2010
iMac iPhoneMac OS 9.0.4500 MHz PowerPC G3 CPU, 128MB MemoryScreen - 786K pixelsStorage - 30GB Hard Drive
iOS 4.01 Ghz ARM A4 CPU, 512MB MemoryScreen - 614K pixelsStorage - 32GB Flash Drive
Source: Ars Technical Images: Apple
Digital LifestyleThe “mobile web” is just the web – there is only one web
d ig i ta l on l ine wor ld
Digital Online World
WorkMore
informationFocused
Digital Online World
BrowsingConsuming
content
CheckingMobileNow
ConsumingVideo
Information
The Post-PC Era The Personal Computer era is over– Rise of the network – APIs– Enterprise systems are accessible
by consumers– New devices, mobile phone,
ITV, game machines, MP3 players,...Source: (cc) 1998-2008Digibarn Computer Museum,
Source: Picture from Convergence Transforms Digital Home: Techno-Economic Impact
The Post-PC Era New Requirements– More users, more complicated software– Uptime, security and reliability– Scalability– Competition drives need for productivity– Leveraging investments – integration with
existing systems
Challenges in Computing
Software and integration of components and devices are the challenges ahead
Cloud computing and ubiquity Move to Service Oriented Architecture and APIs
1980 1990 2000
HardwareConnecting hardware
NetworkSoftware
Connectingsoftware
New Approch to SoftwareArchitecture
Which of the following statements is not true?
A) The challenge ahead is to connect softwareB) The PC is no longer a device for developmentC) Computing has moved to the cloudD) During the digital decade, the PC was the digital hub for all you devices
QUIZ
✔
Enterprise Application
Enterprise Applications Software running in corporate data centers Characteristics– Involve data, some times huge amounts– Concurrent data access, multiple users– Lot of user interface screens– Integration with other enterprise application– Use of middleware software, such as
databases, application servers, web servers– Operated by specialists – system operators
Examples B2C (business to consumer)– E-commerce web sites such as Amazon, eBay– Commercial services like banking
Commerce Solutions– Payroll, patient records, shipping tracking, cost
analysis, credit scoring, insurance, supply chain, accounting, customer service, and foreign exchange trading
Information– Stock quotes, sports results, email, blogs
Software as a Service (SaaS) “On-demand” software– Cloud computing
IT infrastructure demands– Communication: interacting with the software– Scalability: dealing with fluctuation– Dependability: available 24/7
Software as a Service Examples E-mail services Project management Blog services
What is not necessarily characteristic of enterprise software?
A) Has many concurrent users working on the same dataB) Integrates with other IT systemsC) Deploys some form of distribution strategyD) Is operated by specialists not by the users
QUIZ
✔
Building Blocks
Building Enterprise Applications Building computer systems is hard– As the complexity of the
system gets greater, thetask of building thesoftware gets exponentially harder
Building Enterprise Applications Building computer systems is hard
DesignPattern
Middleware
FrameworksOOProgramming
SoftwareArchitecture
Software Architecture Shared understanding of system’s design
by the expert developers on a project– Highest-level breakdown of a system into its
parts– Decisions that are hard to change
Architecture influences design of components, technology, performance and middleware
There are always options
Object Oriented Programming OO is key to development of systems– Design for reusability, flexibility and
performance
One of the biggest hurdles for developers– Each component should be simple with simple
task– Involves understanding of interaction of parts
“OO design is more important than specific technologies, such as J2EE. We should try to avoid letting our technology choices, such as J2EE, constrain our ability to use true OO design” – Rod Johnson “If the design is good, there is no code”
– Jónas Þór, Senior Betware developer
Design Patterns Design using known ideas– Design patterns are standard solutions to
common problems in software design– Systematic approach for problems that
reoccur in software development– Patterns have name and definitions - not
language dependant History– Landmark book from 1995: Design Patterns:
Elements of Reusable Object-Oriented Software Gang of Four (GoF)
Middleware Enterprise system are built on middleware
– Can cover a broad spectrum of software and generally sits between an application and an operating system
– For example, databases, application servers, web servers, messaging systems, transaction monitors
– “The plumbing” Horizontal market
– Solves common problems – not specific business requirements
– Low-level system
Frameworks Frameworks define the support structure for how
to organize and build systems– Can improve productivity– We can use existing frameworks or build our own
Frameworks implement common problems– Developers extend and add their business requirements
Framework design– Use inheritance, inversion of control, interfaces and
helper classes– Implement design patterns
Which of the following statement is not true?
A) Design patterns are solutions to common problemsB) Object oriented programing is good for general problemsC) Frameworks are used to increase productivityD) Middleware can solve business related problems
QUIZ
✔
Evolution of Enterprise Software
Evolution60 70 80 90 00
IBMMainframes
Limitedlayering orabstraction
IBM, DECMini-
computersUnix, VAX
“Dumb”terminals
Screens/DB
PC, Intel,DOS, Mac,
Unix, Windows
Client/ServerDB
WindowsInternet
HTTP
Web Browsers
WebApplications
DB
Windows,Linux
MacOS
Browsers,ServicesDomain
ApplicationsDB
Evolution60 70 80 90 00
IBMMainframes
Limitedlayering orabstraction
IBM, DECMini-
computersUnix, VAX
“Dumb”terminals
Screens/DB
PC, Intel,DOS, Mac,
Unix, Windows
Client/ServerDB
WindowsInternet
HTTP
Web Browsers
WebApplications
DB
Windows,Linux
MacOS
Browsers,ServicesDomain
ApplicationsDB
iOSAndroidHTML5
BrowsersAppsAPI
CloudNoSQL
10
Client-Server Two-layer systems– Thick client on PCs handle user interface and
connect to servers for data
Client-Server The client handles all computation –
domain logic (business logic)– Limited reusability– Versioning is a challenge
Move to Three Tiers Three Layers– Presentation Layer for the User Interface– Domain Layer for the domain logic– Data Source Layer for the data access
Enter the Web Layer The Web added new challenges
– The browser accesses strings of tags (HTML)– Move the logic from client to a web layer
– Web layer adds connectivity by HTTP protocols
Application Servers Domain Components are deployed on
Application Servers– Distributed Multi-tiered Applications– Example:
• Web Servers, Spring, EJB containers
Client Types Native Applications – Apps – Usually use some OS GUI and APIs– Windows, Linux, MacOS, iOS, Andriod– Communication can be anything
Embedded– Run inside Web Browsers– Flash, Java Applets– Communication with XML using HTTP
Client Types Rich Internet Application (RIA)– JavaScript calls REST/SOAP services for data– HTML with XML/Json using Ajax/jQuery
HTML Presentation in Browsers– All functionality is server side– Simple HTML
Tiers vs. Layers Tier implies physical layer
– Example:• Client-server is two-tier system: client on one machine,
server on another
Layers do not need to run on separate machines– Layers can be on the same machine– Example:
• Web system with Web Layer, Domain Layer and Data Source Layer on the same machine, then the database on a separate machine
N-tier Web App Architecture Classic architecture
Which of the following statements is not true?
A) Versioning is only a challenge with client-service modelB) Layers need not be on a separate machinesC) Web servers can be used as application serversD) Scalability is achieved by duplicating the system
QUIZ
✔
Service Oriented Architecture
Imagine you are building an e-commerce web site
Traditional Architecture
Bookstore UI
Accounting service
Payment service
Shipping service SQLBrowser Apache
Benefits– Simple to develop and test, good architecture– One release and deployment– Easy to scale
Monolithic Architecture– Silo– Any subsystem can call other subsystems
Traditional Architecture
Drawbacks with the Monolith– UI requirements, multiple devices, streaming
real-time– Need to deploy everything to change one
component– Increased risk of failure– Fear of change– Updates are less often (A/B tests are difficult)
Traditional Architecture
Service Oriented Architecture Software Architecture where all
components are designed to be services Applications composed of interoperable
services– Easy to build new services– Easy to change
SOA Architecture
Bookstore Service
Accountservice
Payment service
Shipping service
Bookstore UI
API
Bezos’ Mandate1. All teams will henceforth expose their
data and functionality through service interfaces
2. Teams must communicate with each other through these interfaces
3. There will be no other form of interprocess communication allowed
Bezos’ Mandate4. It doesn't matter what technology they
use5. All service interfaces, without exception,
must be designed from the ground up to be externalizable. No exceptions.
6. Anyone who doesn't do this will be fired.
Which statement is not true about SOA?
A) SOA does not affect performanceB) No service can access other service data except using APIsC) SOA improves productivity though reuseD) Monoliths system must deploy all components
QUIZ
✔
Layering
Layering Software systems can get complicated– Abstractions are needed
Layering provides abstraction by separating computer systems in layers– Higher layers use services from
lower layers– Each layer has dedicated tasks
and hides complexity from upperlayers
Benefits of Layering You can understand a single layer as a
coherent whole without knowing much about other layers
You can substitute layers with alternative implementation of the same basic service
You minimize dependencies between layers Layers make good places for standardization Once you have a layer built, you can use it for
many higher-level services
Downsides Layers encapsulate some, but not all,
things well– Cascading changes– For example adding a field in the UI requires
changes on each layer Extra layers can harm performance– At every layer things typically need to be
transformed from one presentation to another
The Three Layers Presentation
– User’s interface to the system– User can be another system– Accepts input, displays views
Domain– The Application of the system– The “Business logic”– Tends to creep into presentation and data source
Data Source– Connection to the database– Also Persistence
Summary The Post-PC era poses new challenges Enterprise Application defined Building Blocks for building enterprise
applications Service Oriented Architecture Layering is the oldest trick in the book