Architecture - December 2013 - Avinash Ramineni, Shekhar Veumuri
-
Upload
clairvoyantllc -
Category
Technology
-
view
15 -
download
0
Transcript of Architecture - December 2013 - Avinash Ramineni, Shekhar Veumuri
Recap• Web services
– SOAP– Rest
• Security– Authentication and Authorization– SSL
• AWS– EC2,S3,RDS,EBS,ELB
Architecture Concepts
PART 1
Architecture
• Understanding business goals
• Understanding the constraints
• Set the vision and communicate
Architecture
• Software Architecture
• Enterprise Architecture
Architecture
• Who are the stakeholders of any Architecture?
• Business
• Technology Leadership
• Developers …
Architecture
• Functional vs Non Functional Requirements
• Constraints
• Point in time representation - evolves over time
Architecture
• A Conceptual or Logical View of the system
• Implementation View
• Data Flow
• Systems view / Physical view
Architecture
• How to communicate?
• UML
• Whiteboard diagrams - boxes and arrows
Architecture
• Whiteboard diagrams - boxes and arrows
• Collapse related components• Have different views • Keep it abstract - but actionable• Typically Layered
Architecture
• What• Are we building• What roles interact with the system• How does it integrate into the rest of the environment• Data flows, process flows
Architecture
• What• is the technology stack• how do interactions between various components
happen?• What are the lower level technology choices?
Architecture
• What• does the detailed software component architecture
look like?• How do these components interact with each other • Fairly low level - developer oriented
Architecture
• Component and Functional view
• Interactions - Flows• Data• Specific pieces of logic
Architecture
• HOW do we do it?
• All up front
• Agile
Architecture - Process
• Find the Drivers of the business, Goals, requirements
• What is our strategy to implement this?
• How does the overall vision get implemented? (roadmap)
Architecture - Process
• What are the risks? How do we mitigate them?
• How does the architecture evolve?
• Quality - review - validate
Architecture
• A good architecture helps you evolve
• A good design lets you change at a lesser cost
• Abstractions - decoupling help with that
• Reduce tight coupling and hard dependencies
Architecture
• Monolithic Applications
• Service Oriented applications
N- Tier Architectures
Fallacies of Distributed Systems
• The network is reliable• Latency is zero• Bandwidth is infinite• The network is secure• Topology does not change• Transport cost is zero• Network is homogeneous
Best Practices
YAGNI
KISS
DRY
Best Practices
Continuous Integration / Deployment
Premature Optimization
Transactions
Distributed Transactions• Follows 2 Phase Commit protocol• Very Chatty protocol and does a lot of logging to be able to recover
from any failure scenario.• Too much overhead to 99.9% of the cases to handle less than 0.1% of
cases• Increases the chances for deadlocks on the database.• Lowers the overall performance of the system.• Bane of scalability. Grinds the entire system to halt by adding overhead
to each and every transaction.
Distributed Transactions• Availability of the Systems goes down.
• XA Configuration is complicated
• Difficult to test.
• Many People tend to believe that using JTA implementation of transaction manager will take care of a XA transactions
• Many a time people end up using JTA Manager even while dealing with single resource
Asynchronous Architectures• Event Delivery Guarantees
– Reliability
• At least Once - Duplicate events can be delivered
• At most Once - Some events can be lost• Once and only Once - Each is delivered Exactly once
– Order of Delivery
• In Order Guaranteed
• In Order not Guaranteed