works tried to identify: software architect roles, SA
designs to improve the coordination of activities,
coordination problems in DSD environments and
events that may cause these problems, and even the
relationship between SA and organizational
structures. Aiming to better understand the
relationship between DSD and SA and to identify
how software architects are working on designing
the systems to a distributed environment, in practice,
we held a research divided in three phases of
interviews with specialists (Software Architects),
with expertise in DSD projects.
Data was collected using semi-structured interviews
conducted in five companies involved with
distributed software development projects, located
in Porto Alegre, RS, Brazil. Last round of
interviews, an in-depth interview, revealed solutions
adopted to solve architectural problems in SOA and
in business rules. Below are presented the problems
that were identified and the solutions adopted to
solve or minimize them. These solutions stand as a
set of practices in SOA in DSD projects.
4.1 Practices Adopted by Companies
Situation 1: Service Composition
- Problem: A particular requirement allows a user to
have one or more types of Internet product accounts,
and for each account type there is a service
(program) responsible for its creation, however there
is one type of account that must always be created.
- Solution: To avoid inconsistencies in the creation
of user accounts, they have created a service that
comprises the sum of transactions of two or more
services. With this kind of implementation two or
more services can become in one without the need
for changes in the implementations of those
services.
Situation 2: Service Security Facade
- Problem: The Company has a great concern for the
safety of their operations. Therefore, it is necessary
that all services implements a minimum set of
security requirements.
- Solution: To avoid failure in the development of
services security layer, they’ve designed a bus that is
responsible for receiving all requests, interpret the
entries and validate the safety rules and then invoke
the target service, which performs only the business
rule and also does not need to translate
communication protocols.
Situation 3: Sandbox
- Problem: The large number of service requests and
data traffic would cause an overload on the
company's ESB.
- Solution: To prevent service disruption could
hardly implement in the ESB, service requests are
passed to an intermediate service, isolating the bus
from external problems, preserving the continuity of
other services.
Situation 4: Contract Versioning
- Problem: During the development of a service,
changes can happen in the format of the output
responses of this service or on how to interpret the
incoming messages.
- Solution: To prevent other development teams,
who need to access this particular service are
constantly affected by these changes, has been
implemented what is known as versions of the
contract, where a service can serve multiple clients
simultaneously with different versions.
Situation 5: Multi-system Transaction
- Problem: A particular service starts a transaction
that triggers actions in several other subsystems and
modules that make up the architecture of a system of
sales.
- Solution: It was developed a mechanism for multi-
system rollback and commit to meet the business
needs.
Situation 6: Messages Marshaling / Un-marshaling
- Problem: The use of parsers to read and write an
XML object can become very expensive depending
on the amount of information.
- Solution: It was used SOAP message components
that translate into specific objects of the system,
eliminating the need to use an XML parser
manually.
Situation 7: Publish / Subscribe Service
- Problem: There are main services that centralize
information on the system. Those services have a
great demand, causing possible overload on it.
- Solution: It was implemented a mechanism that
includes the use of queues for asynchronous
processing of information. Information is published
in a queue where a component responsible for the
consumption of items from the queue, do a
broadcast to client services.
Situation 8: Centralized Error Log Service
- Problem: Error logs must be stored in a central
repository in order to be verified by a specific team.
- Solution: Every service deployed solution must
write the error log, invoking a specific service so
that another team, responsible for maintenance,
could have access to this information.
As we could get from data collected from these
interviews, there are practices that had adopted
solutions in the development phase of projects and
ICEIS 2011 - 13th International Conference on Enterprise Information Systems
288