Distributed systems, cloud computing, and Mobile Technology open up new opportunities and ways to design systems and develop applications. They form the infrastructure for enterprise-wide core business, database, workflow and web applications. This course examines the process from architecture through to design of distributed enterprise systems and looks at many of the architecture and design choices that need to be made. The use of the three major component technologies in building flexible distributed computing architectures are also studied.
Adopting an agile philosophy is now commonly used to describe business requirements, identify components, their interactions and placement in a multi-tier environment. Using an agile approach we incrementally build out from first base concepts to enterprise wide solutions. We take a tour of the infrastructure necessary to support distributed applications and the trade-offs in cost, performance and scalability. We consider persistence in its many varied forms including Relational Database Management Systems (RDBMSs) which still provide the core technology for implementing many distributed enterprise systems, NoSQL DBs, and cloud storage models.
Throughout the course, architectural choices and considerations for distributed systems are presented and case studies are discussed.
Anyone wishing to gain a broad and pragmatic understanding of the principles and technologies used to building robust distributed enterprise architectures. This would include experienced IT professionals, such as system analysts, enterprise, technical, and solutions architects, integrators, application designers and senior developers. Those delegates wishing to simply gain an overview of Distributed Systems may be better served by attending our Understanding Modern Information and Communication Technology course.
Technical hands on design sessions (no programming) and case studies will be used throughout the course.
You will need a knowledge of client/server concepts and technology. Basic knowledge of object-oriented technology, OO and ER modelling and a programming language would be an advantage, but are not essential.
- Describe what are the primitives of a distributed system – RPC or MOM style communications models, marshalling of data, the structure of computing nodes whether physical, virtual, or container based.
- Described the basics Enterprise and Business Architectures
- Describe what a multi-tiered architecture is, the purpose of each teach, and architecture patterns
- Described cloud computing, virtualization, and container based technologies. And detail one approach to systems deployment over another.
- Describe the role of an Enterprise Architecture, Solution Architecture, and a Technical Architecture.
- Articulate how the Internet, object technology, cloud computing and component technologies fit into client/server architectures
- Understand the structure of different database models and their limitations
- Describe the different approaches to persistence
- Choose between a variety of persistence strategies, component, and IPC middleware options in order to make objective evaluations of them
- Articulate the fundamentals of DevOps
- Articulate the difference between TOGAF, Zachman, and the Business Model Canvas
- What is an Enterprise Environment and what are systems it is comprised of; architecture approaches; overview of integration technologies, and an overview of the primitives that make up this world.
- What does a distributed computing model look like? The evolution and principles underpinning an environment comprised of many computing nodes
- The glue behind all distributed systems. Middleware primitives (memory models, sockets, TCP/UDP, and the concept of ports and port mappings) are identified and discussed. A middleware pattern that can be used to discuss the various middleware products available today (DIY, MOMs, CORBA, .NET Remoting, Java RMI, SOAP, and ReSTful WS)
Remote Procedure Call (RPC) style middleware
- How do RPC and ORPC work? O/RPC implementations such as ReSTful WS, SOAP, CORBA, .NET Remoting, and Java RMI. Performance and development issues, and cost of ownership.
- SOAP messages; WSDL structure; Overview of UDDI; Publishing an XML Web Service
- JSON messages
Message Oriented Middleware
- Comparison with RPC; MOM Architectures; JMS and AMQP as standards; Types of payload; Typical uses; Performance and development issues, and cost of ownership.
Persistence including Data Replication, and Transactions
- Types of database; SQL database servers; Limits to procedures and triggers; Distributed data; Database middleware; design considerations, NoSQL DBs such Graph DB Neo4J, Key/Value DB such as DynamoDB, and a NetworkDB such as ArrangoDB.
- Benefits and issues with data replication; Types of replication; Synchronisation; Lag; Refreshing data
- Types of transactions; OLTP systems; Rollback and undo; Design considerations; Distributed transactions; Transaction Managers
Virtualization and Containers
- Virtual machine models, Hypervisors, and Containers – Docker and Kubernates
- Cloud computing, and Cloud models; IaaS, PaaS and SaaS, Container Cloud Services, Deploying to the Cloud. Examples from AWS and Azure.
- An overview of DevOps, the lifecycle, roles, and tools.
- Issues and solutions; Encryption; Authentication; Certification; Transactional Security; SSL, PCT, SET, VPNs, TOR (The Onion Router), Kali Linux
Quality of Service Attributes
- QoS hotspots. QoS attributes such as availability, performance, fault tolerance, security feed-ins, handling failure, clustering, replication, Data Centre Placement, and Distributed Systems Consensus (Raft Consensus).
- Understand and define an Enterprise, Solution, and Technical Architecture. Examine their correlation to each other and hwo these architectures manifest themselves in industry.
Common Enterprise Systems Architectures
- OLTP; DSS; Data warehousing; Data Marts; Message Oriented Middleware; Content Managements Systems; Search Engines
Common Enterprise Systems Solutions
- Microsoft Transaction Server; COM ; The .NET Framework; JEE; ERPs; IBM MQSeries; Spring; Hibernate; EJBs
Common Web Architecture Solutions
- Client/server and the Internet; Types of applications; Database engines and the web; CGI and extensions; scripting, ASP.Net; Servlets and JSPs; ReSTful Web Sevices, ReactJS and AngularJS examples.
- Heterogeneous environments; The Web as integrator; Using Web Services; MOM for EAI; Orchestration; Other techniques; Design considerations
- Methodologies; Choosing evaluation criteria; Documenting architectures
- Several real-life systems ranging in scale are examined