SOA/MOA Flashcards

1
Q

What is Service-oriented architecture?

A

Software design style / approach to build software.

Software that consist of services that ‘talk’ via net-protocols: atomic, reusable services.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

In SOA, what is a service?

A

Software unit functionality encapsulates a business function.

Like: “Get credit card statement” or even “Payment”.

Can be accessed remotely and updated etc. independently (think cloud).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

In SOA, what is an Enterprise Service Bus?

A

It is software which handles which orchestrates the services in a SOA application.

So the meaning of orchestrating is that it routes, and manages the communication while managing errors and maintaining sequence.

It also translates requests between services.

Dont say this but, think like a gateway that has a lot more business logic inside of it and then in a SOA application.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

In SOA, the ESB handles some business logic. What kinds of logic?

A

It is like a business layer on top of the services:

  • Handles business logic
  • Route & format messages
  • Security & Proxy
  • Exception handling

In short it ties the services together.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Which communication principles are SOA based on?

A

Based on WSDL, RPC, SOAP, later on REST

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is the main principle of traditional SOA?

A

To break down the application into business-logic oriented services.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Is SOA typically web or programs?

A

Web

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Does SOA have requirements to other systems outside of its own ecosystem?

A

Yes they can use other services 3rd party services.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

There are two approaches to building SOA applications, which?

A

Top-down and Bottom up.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is the Bottom-up approach

A

When you build the smallest components/services first.

Think like this:
You can start with the ESB as it does not require the whole stack to work and then add pieces to it. - small and many roll outs & investments.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is the Top-down approach

A

Building services from the top - which needs other components to work.

Think like this:
requires much to be rolled out simultaneously. therefore, expensive, needs experienced developers who sees and plans for the requirements (so no mistakes). But people make mistakes so 80 % of these projects fail.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Pros with the SOA approach?

A

“Because you divide the application into services its easier to plan and work with and its easier and cheaper to update. It is also reusable”

From slides:
Retains RPC principles but standardizes the way components work together.

(RPC is a request–response protocol. An RPC is initiated by the client, which sends a request message to a known remote server to execute a specified procedure with supplied parameters. )

Reusable: Services are standalone.

Maintainable: ‘local’ changes and updates are easy.

Interoperability: uses well known protocols so it can work with 3rd party stuff.

Availability: ‘Everyone’ can call a service.

Reliable: often on cloud, easy to debug and fix smaller services.

Scalable: adding servers are easy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Cons with SOA?

A

Because the services communicate over the network the systems can be hard to follow when debugging.

Complexity: If poorly designed the application can become complex and hard to implement. Or if its inherently just a complex program.

Initial investment is high

Hard to follow: it can be hard to follow the messages around the system.

Bottlenecks: can happen dependent on the case. (can be solved with caching maybe)

High coupling: can happen because a system is used a lot by other systems.

Slower because of the networking compared to a monolith.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is the guidelines when building SOA based applications?

A

Service Statelessness

Loose Coupling: less dependency on others.

Service Abstraction: Black boxes to the outside world

Service Reusability: Logic is divided into services for reusability.

Service Autonomy: Services has control over the logic they deal with.

Service Composability: do one thing good, not 10 things bad.

Discoverability: be discovered - makes them available to be called.

Service Interoperability: Language agnostic

Standardized Service Contract: have a description of the service

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Differences between SOA and Microservices?

A

Scope of the services:
SOA services scope is larger compared to microservices.

SOA is often synchronous (because ESB and things need to happen in sequence) think payment.

Microservices do not have ESB. They have smaller scope, own data source - some duplication in code because they all need to check the same things or access a db (does not mean that they are larger)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Compare Microservices and SOA

A

Both encapsulate smaller amount of logic compared to a monolithic application.

They both allow for easier development and separation of concerns

SOA services is ‘managed’ by an ESB
Microservices manage themselves which also results in more duplicate code, but their scope is also smaller so they are also smaller.

Both have disaster recoverability and management in the terms of you can deploy a new service or use another one if one is down.

Teams can specialise in for example authentication and not worry about another service which uses python and AI