Saturday, April 12, 2014

Enterprise Architecture


What Would You do if You Were Invisible Man for a Day?

Everyday Enterprise Architecture

Whatever we do, however we approach it, and whichever part of the organisation we work in, all of enterprise-architecture comes down to one single, simple idea:
"Things work better when they work together, with clarity, with elegance, on purpose." 
Enterprise-architects are responsible to the organisation to make that happen: the underlying aim of every item of architecture-work in the enterprise is to make things work better for everyone.


Sunday, April 06, 2014

Aquele que está só é inocenteAquele que está só é inocente

"Um dos fatores do sofrimento é o extraordinário isolamento do homem. Você pode ter companheiros, pode ter deuses, pode ter muito conhecimento, você pode ser extraordinariamente ativo socialmente, fazer fofocas intermináveis sobre política – e muitos políticos fazem fofoca de qualquer jeito – e este isolamento permanece. Assim, o homem procura descobrir significado na vida e inventa um significado, um propósito. Mas o isolamento ainda permanece. Então, pode você olhar para ele sem comparação, apenas vê-lo como ele é, sem tentar correr dele, sem tentar encobri-lo, ou fugir dele? Então você verá que o isolamento se torna algo inteiramente diferente. Nós não estamos sós. Somos o resultado de milhares de influências, milhares de condicionamentos, heranças psicológicas, propaganda, cultura. Não estamos sós e, por isso, somos seres humanos de segunda mão. Quando se está só, totalmente só, não pertencendo a nenhuma família, embora você possa ter uma, nem pertencendo a qualquer nação, qualquer cultura, a qualquer compromisso particular, existe o sentimento de ser um estranho, estranho a toda forma de pensamento, ação, família, nação. E apenas aquele que está completamente só é inocente. É esta inocência que liberta a mente do sofrimento." -

Krishnamurti, J. Krishnamurti, The Book of Life


Monday, March 31, 2014

Five Aspects of Service Design

There are five aspects of design that need to be considered:

  1. The design of the services, including all of the functional requirements, resources and capabilities needed and agreed
  2. The design of service management systems and tools, especially the Service Portfolio, for the management and control of services through their lifecycle
  3. The design of the technology architectures and management systems required to provide the services
  4. The design of the processes needed to design, transition, operate and improve the services, the architectures and the processes themselves 
  5. The design of the measurement methods and metrics of the services, the architectures and their constituent components and the processes.

Business Value

With good Service Design it will be possible to deliver quality, cost-effective services and to ensure that the
business requirements are being met. The following benefits are as a result of good Service Design practice:

  1. Reduced total cost of ownership (TCO): cost of ownership can only be minimized if all aspects of services, processes and technology are designed properly and implemented against the design
  2. Improved quality of service: both service and operational quality will be enhanced
  3. Improved consistency of service: as services are designed within the corporate strategy, architectures and constraints
  4. Easier implementation of new or changed services: as there is integrated and full Service Design, and the production of comprehensives Service Design Packages
  5. Improved service alignment: involvement from the conception of the service ensuring that new or changed services match business needs, with services designed to meet Service Level Requirements
  6. More effective service performance: with incorporation and recognition of Capacity, Financial, Availability and IT Service Continuity plans
  7. Improved IT governance: assists with the implementation and communication of a set of controls for effective governance of IT
  8. More effective service management and IT processes: processes will be designed with optimal quality and cost-effectiveness
  9. Improved information and decision-making: more comprehensive and effective measurements and metrics will enable better decision-making and continual improvement of service management practices in the design stage of the Service Lifecycle.

Saturday, March 29, 2014

Messaging Chennels

Point-to-Point Channel
Publish-Subscribe Channel
Datatype Channel

Message Bus

An enterprise contains several existing systems that must be able to share data and operate in a unified manner in response to a set of common business requests.

Scenario One (problem)

Solution

Scenario Two (solution)

Messaging Systems

Messaging makes applications loosely coupled by communicating asynchronously, which also makes the communication more reliable because the two applications do not have to be running at the same time. Messaging makes the messaging system responsible for transferring data from one application to another, so the applications can focus on what data they need to share but not worry so much about how to share it.

Channels — Messaging applications transmit data through a Message Channel, a virtual pipe that connects a sender to a receiver. A newly installed messaging system doesn’t contain any channels; you must determine how your applications need to communicate and then create the channels to facilitate it.

Messages — A Message is an atomic packet of data that can be transmitted on a channel. Thus to transmit data, an application must break the data into one or more packets, wrap each packet as a message, and then send the message on a channel. Likewise, a receiver application receives a message and must extract the data from the message to process it. The message system will try repeatedly to deliver the message (e.g., transmit it from the sender to the receiver) until it succeeds.

Multi-step delivery (or pipes & filters)— In the simplest case, the message system delivers a message directly from the sender’s computer to the receiver’s computer. However, actions often need to be performed on the message after it is sent by its original sender but before it is received by its final receiver. For example, the message may have to be validated or transformed because the receiver expects a different message format than the sender. A Pipes and Filters architecture describes how multiple processing steps can be chained together using channels.

Routing — In a large enterprise with numerous applications and channels to connect them, a message may have to go through several channels to reach its final destination. The route a message must follow may be so complex that the original sender does not know what channel will get the message to the final receiver. Instead, the original sender sends the message to a Message Router, an application component and filter in the pipes-and-filters architecture, which will determine how to navigate the channel topology and direct the message to the final receiver, or at least to the next router.

Transformation — Various applications may not agree on the format for the same conceptual data; the sender formats the message one way, yet the receiver expects it to be formatted another way. To reconcile this, the message must go through an intermediate filter, a Message Translator, that converts the message from one format to another.

Endpoints — An application does not have some built-in capability to interface with a messaging system. Rather, it must contain a layer of code that knows both how the application works and how the messaging system works, bridging the two so that they work together. This bridge code is a set of coordinated Message Endpoints that enable the application to send and receive messages.

Message Endpoint

The application and the messaging system are two separate sets of software. The application provides functionally for some type of user, whereas the messaging system manages messaging channels for transmitting messages for communication. Even if the messaging system is incorporated as a fundamental part of the application, it is still a separate, specialized provider of functionality much like a database management system or a web server. Because the application and the messaging system are separate, they must have a way to connect and work together.

Connect an application to a messaging channel using a Message Endpoint, a client of the messaging system that the application can then use to send or receive messages.


Message Translator

Use a special filter, a Message Translator, between other filters or applications to translate one data format into another.


Chaining Transformations

Message Router

Multiple processing steps in a Pipes and Filters chain are connected by Message Channels. A Message Channel decouples the sender and the receiver of a Message. This means that multiple applications can publish Messages to a Message Channel. As a result, a message channel can contain messages from different sources that may have to be treated differently based on the type of the message or other criteria. You could create a separate Message Channel for each message type (a concept explained in more detail later as a Datatype Channel) and connect each channel to the required processing steps for that message type. However, this would require the message
originators to be aware of the selection criteria for different processing steps, so that they can publish the message to the correct channel. It could also lead to an explosion of the number of Message Channels. Also, the decision on which steps the message undergoes may not just depend on the origin of the message. For example, we could imagine a situation where the destination of
a message changes by the number of messages that have passed through the channel so far. No single originator would know this number and would therefore be unable to send the message to the correct channel.

Insert a special filter, a Message Router, which consumes a Message from one Message Channel and republishes it to a different Message Channel channel depending on a set of conditions.


Parallel Processing

However, the overall system throughput is limited by the slowest process in the chain. To improve throughput we can deploy multiple parallel instances of that process to improve throughput. In this scenario, a Point-to-Point Channel with Competing Consumers is needed to guarantee that each message on the channel is consumed by exactly one of N available processors. This allows us to speed up the most time-intensive process and improve overall throughput. However, this configuration can cause messages to be processed out of order. If the sequence of messages is critical, we can only run one instance of each component or use a Resequencer.