Here's a collection of SOA interview questions which could be useful before going for a technical interview.
SOA Interview questions
What are the main benefits of SOA ?
SOA helps create greater alignment between IT and line of business while generating more flexibility - IT flexibility to support greater business flexibility. Your business processes are changing faster and faster and global competition requires the flexibility that SOA can provide.
SOA can help you get better reuse out of your existing IT investments as well as the new services you're developing today. SOA makes integration of your IT investments easier by making use of well-defined interfaces between services. SOA also provides an architectural model for integrating business partners’, customers’ and suppliers’ services into an enterprise’s business processes. This reduces cost and improves customer satisfaction
How do you transform an Enterprise business in a SOA ?
Transforming an enterprise business to Service Oriented Architecture includes obtaining standardized service contract, service reusability, service abstraction, service loose coupling, service composability and so on.
Of course SOA is an architectural model agnostic to technology platforms and every enterprise can pursue the strategic goals associated with service-oriented computing using different technologies. However in the current marketplace, Web Services are probably the technology platform that better suits SOA principles and are most used to get to this architecture.
How do you map your Organization Roles in order to promote SOA ?
Enterprise architect: It is his responsibility to ensure that SOA endeavors are in venture with business goals, and that the SOA is expanding business readiness. He will translate business goals into general SOA objectives, set the overall direction of the SOA, and guarantee that the work progresses within the established architecture for the organization.
Solutions architect: Solutions architects generally report to the enterprise architect or CTO, and may have pretty much of a hands-on part, depending on the size of the company. Solutions architects are truly interpreters between business objectives and designs that can fulfill those objectives, and they consult with both the management and technical sides of the house to architect a solution. They may assist in vendor selection and focus on business integration, making sure that their solutions are aligned with all impacted business domains.
Technical architect: Technical architects fall right amidst the SOA, as they work closely with the solutions architect, business analysts, service infrastructure administrators, and service developers to identify viable technical specifications that conform to the needs of all of these different areas.
This is a technical role, deepening the contours suggested by the solutions architect’s work product. They must be sharply aware of SOA technology options, as well as fundamentals like network technology, infrastructure support technology, and so on.
Technical architects should have deep knowledge of the products in use. Just as the solutions architect is the translator between the business and the architecture,technical architects are the translators between everyone at the technology level in order to determine an appropriate architecture that’s ready to be implemented by the service developers.
Developer: Service developers work with technical architects to implement services. IDE. They work with the network administrators to ensure the safe arrival of the services into production. They may also support and maintain services after they are developed.
Service administrators: Service administrators’ primary tools are the registry and repository. They ensure that services are available and documentation is correct. They may serve with architects on a change control or governance board, and they keep on top of versioning and availability.
What is a reusable Service?
It is an autonomous, reusable, discoverable, stateless functionality that has the necessary granularity, and can be part of a composite application or a composite service.
A reusable service should be identified with a business activity described by the service specifications (design-time contract).
A service's constraints, including security, QoS, SLA, usage policies, may be defined by multiple run-time contracts, multiple interfaces (the WSDL for a SOAP Web Service), and multiple implementations (the code).
A reusable service should be governed at the enterprise level throughout its entire lifecycle, from design-time through run-time. Its reuse should be promoted through a prescriptive process, and that reuse should be measured.
Talking about Service identification, which approach between top-down and bottom-up methodologies best fits with a SOA ?
SOA is an architectural style. And building architecture is a Top-Down process and not Bottom-Up. The most compelling reason for saying that Web Services are not SOA is that they are technical stuff, often built with a Bottom-Up approach. Building a Bottom-UP SOA is a wrong approach and might lead to an architecture with a lot of redundancy or maybe no architecture at all. However, the result of building SOA only Top-Down could be perceptual Architecture building with no run time artifacts, so some SOA efforts should be Bottom-Up efforts. To sum up: Initially SOA is a Top-Down approach but pragmatic approach requires mixing Top-Down approach with Bottom-Up approach.
How can you achieve loose coupling in a SOA ?
One strategy for achieving loose coupling is to use the service interface (the WSDL for a SOAP Web Service) to limit this dependency, hiding the service implementation from the consumer. Loose coupling can be addressed by encapsulating the service functionalities in a manner that limits the impact of changes to the implementation on the service interface. However, at some point you will need to change the interface and manage versioning without impacting service consumers, in addition to managing multiple security constraints, multiple transports, and other considerations.
Do you recall any pattern which could be use to leverage loose coupling ?
The Mediation pattern, using an enterprise service bus (ESB), will help in achieving this.
Mediation will take loose coupling to the highest level. It will establish independence between consumers and providers on all levels, including message formats, message types (including SOAP, REST, XML, binary) and transport protocols (including HTTP, HTTPS, JMS).
Architecturally speaking this means the separation of concerns between consumers and providers on the transport, message type, and message format levels.
The Service of a SOA should be engineered as stateless or stateful ?
Service should be stateless. It may have a context within its stateless execution, but it will not have an intermediary state waiting for an event or a call-back. The retention of state-related data must not extend beyond a request/response on a service. This is because state management consumes a lot of resources, and this can affect the scalability and availability that are required for a reusable service.
What is composition of a Service ?
Composition is the process by which services are combined to produce composite applications or composite services. A composite application consists of the aggregation of services to produce an enterprise portal or enterprise process. A composite service consists of an aggregation of services that produces another reusable service. It's just like combining electronic components to create a computer motherboard, and then using that motherboard in a computer. Think of the motherboard as a reusable composite service that is a component of the computer, and of the computer as the composite application.
How do I integrate my Legacy applications with SOA ?
Legacy applications are frequently at the core of your IT environment. With the right skills and tools, you need to identify discrete elements within your legacy applications and "wrap" them in standards-based interfaces and use them as services within your SOA.
How does the ESB fits in this picture ?
The Enterprise Service Bus is a core element of any SOA. ESBs provide the "any to any" connectivity between services within your own company, and beyond your business to connect to your trading partners. But SOA does not stop at just implementing an ESB. Depending on what your goals are, you may want to use an ESB to connect other services within your SOA such as information services, interaction services and business process management services. Additionally, you will need to consider development services and IT service management services. The SOA reference architecture can help you lay out an SOA environment that meets your needs and priorities. The ESB is part of this reference architecture and provides the backbone of an SOA but it should not be considered an SOA by itself.
What are the common pitfalls of SOA ?
One of the most common pitfalls is to view SOA as an end, rather than a means to an end. Developers who focus on building an SOA solution rather than solving a specific business problem are more likely to create complex, unmanageable, and unnecessary interconnections between IT resources.
Another common pitfall is to try to solve multiple problems at once, rather than solving small pieces of the problem. Taking a top-down approach—starting with major organization-wide infrastructure investments—often fails either to show results in a relevant timeframe or to offer a compelling return on investment.
What's the difference between services and components?
Services are logical grouping of components to achieve business functionality. Components are implementation approaches to make a service. The components can be in JAVA, C#, C++ but the services will be exposed in a general format like Web Services.
What are ends, contract, address, and bindings?
These three terminologies on which SOA service stands. Every service must expose one or more ends by which the service can be available to the client. End consists of three important things where, what and how:-
Contract is an agreement between two or more parties. It defines the protocol how client should communicate with your service. Technically, it describes parameters and return values for a method.
An Address indicates where we can find this service. Address is a URL, which points to the location of the service.
Bindings determine how this end can be accessed. It determines how communications is done. For instance, you expose your service, which can be accessed using SOAP over HTTP or BINARY over TCP. So for each of these communications medium two bindings will be created.
Below figure, show the three main components of end. You can see the stock ticker is the service class, which has an end hosted on www.soa.com with HTTP and TCP binding support and using Stock Ticker interface type.
How do you store your Services in a location so that they can be dynamically discovered ?
A common approach is to use an implementation of the Java UDDI (Universal Description, Discovery, and Integration) specification, such as the free and open source Apache jUDDI project. A UDDI registry provides a standard way of storing information about web services and the organizations that provide them. Registries allow you to store, query, and update the information surrounding your SOAP-based web services.
The concept of SOA is nothing new, however why everyone started to talk about SOA only in the last years ?
Yes I agree the basic concept of SOA aren't new, however some technology technology changes in the last 10 years made service-oriented architecture more practical and applicable to more organizations than it was previously. Among this:
- Universally-accepted industry standards such as XML, its many variants, and Web-services standards have contributed to the renewed interest in SOA.
- Data governance frameworks, which are important to a successful SOA implementation, have well test and refined over the years.
- A variety of enabling technologies and tools (e.g., modeling, development, infrastructure/middleware, management, and testing) have matured.
Understanding of business and business strategies has grown, shifting attention from technology to the people, cultural changes, and process that are key business success factors.
How can you monitor your business, once that SOA has been adopted ?
Business Activity Monitoring (BAM) is a key aspect in monitoring your business and thus the running of your SOA. In short, Business Activity Monitoring (BAM) is a set of tools that allow you to manage aggregations, alerts, and profiles to monitor relevant business metrics (Key Performance Indicators, in short KPIs). It gives you end-to-end details of your business processes, providing accurate information about the status and results of various operations, processes, and transactions so you can address problem areas and resolve issues within your business.
Within the JBoss BPM Suite you have the capabilities with the Business Activity Monitor (BAM) dashboard to generate almost any report you might need around the data sources at your disposal.:
What is the most important skill you need to adopt SOA ? technical or cultural ?
Surely cultural. SOA does require people to think of business and technology differently. Instead of thinking of technology first (e.g., If we implement this system, what kinds of things can we do with it?), practitioners must first think in terms of business functions, or services (e.g., My company does these business functions, so how can I set up my IT system to do those things for me most efficiently?).It is expected that adoption of SOA will change business IT departments, creating service-oriented (instead of technology-oriented) IT organizations.
Is SOA really needed on your opinion?
SOA is not for everyone. While SOA delivers significant benefits and cost savings, SOA does require disciplined enforcement of centralized governance principals to be successful. For some organizations, the cost of developing and enforcing these principals may be higher than the benefits realized, and therefore not a sound initiative.
References of this SOA interview questions :