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
5. 1960 1970 1980 1990 2000 2010
Mainframes
Mini computers
Personal Computers
Servers
Clusters
Cloud – utility computing
Laptops
Music player
2G Cell phones
CONVERGE
DIVERGE
Smartphones
Tablets
Smart TV
Internet of things
8. “[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 DIGITAL
DECADE
19. 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-2008
Digibarn Computer Museum,
Source: Picture from Convergence Transforms Digital Home: Techno-Economic
Impact
20. 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
21. 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
Hardware
Connecting hardware
Network
Software
Connecting
software
23. Which of the following statements is not true?
A) The challenge ahead is to connect software
B) The PC is no longer a device for development
C) Computing has moved to the cloud
D) During the digital decade, the PC was the digital hub for all you devices
QUIZ
✔
40. 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
41. 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
42. 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
43. Software as a Service Examples
E-mail services
Project management
Blog services
44. What is not necessarily characteristic of enterprise software?
A) Has many concurrent users working on the same data
B) Integrates with other IT systems
C) Deploys some form of distribution strategy
D) Is operated by specialists not by the users
QUIZ
✔
46. Building Enterprise Applications
Building computer systems is hard
– As the complexity of the
system gets greater, the
task of building the
software gets
exponentially harder
47. Building Enterprise Applications
Building computer systems is hard
Design
Pattern
Middleware
Frameworks
OO
Programming
Software
Architecture
48. 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
49. 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
50. 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)
51. 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
52. 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
53. Which of the following statement is not true?
A) Design patterns are solutions to common problems
B) Object oriented programing is good for general problems
C) Frameworks are used to increase productivity
D) Middleware can solve business related problems
QUIZ
✔
55. Evolution
60 70 80 90 00
IBM
Mainframes
Limited
layering or
abstraction
IBM, DEC
Mini-
computers
Unix, VAX
“Dumb”
terminals
Screens/DB
PC, Intel,
DOS, Mac,
Unix,
Windows
Client/Server
DB
Windows
Internet
HTTP
Web
Browsers
Web
Applications
DB
Windows,
Linux
MacOS
Browsers,
Services
Domain
Applications
DB
56. Evolution
60 70 80 90 00
IBM
nframes
mited
ering or
traction
IBM, DEC
Mini-
computers
Unix, VAX
“Dumb”
terminals
Screens/DB
PC, Intel,
DOS, Mac,
Unix,
Windows
Client/Server
DB
Windows
Internet
HTTP
Web
Browsers
Web
Applications
DB
Windows,
Linux
MacOS
Browsers,
Services
Domain
Applications
DB
iOS
Android
HTML5
Browsers
Apps
API
Cloud
NoSQL
10
58. Client-Server
The client handles all computation – domain
logic (business logic)
– Limited reusability
– Versioning is a challenge
59. 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
60. 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
61. Application Servers
Domain Components are deployed on
Application Servers
– Distributed Multi-tiered Applications
– Example:
• Web Servers, Spring, EJB containers
62. 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
63. 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
64. 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
66. Which of the following statements is not true?
A) Versioning is only a challenge with client-service model
B) Layers need not be on a separate machines
C) Web servers can be used as application servers
D) Scalability is achieved by duplicating the system
QUIZ
✔
70. 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
71. 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
72. 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
74. Bezos’ Mandate
1. 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
75. Bezos’ Mandate
4. It doesn't matter what technology they use
5. 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.
76. Which statement is not true about SOA?
A) SOA does not affect performance
B) No service can access other service data except using APIs
C) SOA improves productivity though reuse
D) Monoliths system must deploy all components
QUIZ
✔
78. 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 upper
layers
79. 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
80. 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
81. 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
82. 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