Architecture

  • SOA 1 class per service Juval Lowy framework

    I posted this a year ago.... I'm really against this make each class a separate service concept. It reminds me of the Microkernel and especially workplace OS but worse. The idea of microkernels was each service ( like memory) was an easily managed entity with carefully defined inputs and outputs which could be consumed.) Workplace OS took this to limit and performance was so poor that no amount of optimization would help. So they had no choice but to scrap the project ( were talking $2B 10 years ago) the bad thing is once such a design is made and implemented just like workplace OS...

  • Is SSL really secure/too much security

    Is SSL really secure ? By encrypting messages on the wire  people get the feeling its secure and people use it ubiquitiously. Is encrypting on the wire something that really helps ? I don't really think  so , with most networks it is VERY difficult and practically impossible to do . eg - In a LAN you need physical access to put a device in between reading all traffic from a PC ( in which case you have bigger problems) - Switched mean a machine tap is not very usefull ( html is not broad cast) - You need admin access...

  • Why should you use an Event Driven Architecture (EDA)?

    There is a lot of documentation on EDA and people working with SOA and call backs will naturally gravitate to EDA , but i have often wanted a simple reason why.  Here i will attempt this and focus on service based EDA's. 1. It Naturally mirrors organisations. High level EDA events are business events. With EDA anybody may receive these events and act accordingly. This means extending events to new applications is a trivial excercise. 2. Low integration costs Integration expenses are massive, EDA makes it really easy for systems to communicate even more so than SOA's which require writing a...

  • SOA and Cloud computing

    Great article from Zapthink. . Especially " the ESB has been far too central in organization’s discussions about SOA. The logic goes that all you need to do is develop a bunch of Web Services, plop them on an ESB and voila, you have a SOA. Isn’t it amazing that you can get architecture without actually doing architecture? As ridiculous as this might sound, for many organizations, this approach represents fully their SOA strategy. But, the movement to cloud computing throws the ESB “strategy” out the window. In the cloud computing world, you have no visibility into the infrastructure, nor do...

  • Eventing with and without Topics

    While WS-Eventing has no support for Topics ( see last post) it is almost essential for efficient  processing of messages if you have a large amount of subscriptions. Consider the case of 10,000 Subscriptions for 10,000 Notification you are looking at 10^8 expensive xPath comparisons which will bring many servers down to its knees. With EDA we can easily solve this problem ( compare to an overloaded DB) . Lets say we have a Topicless share pricing feed  something like <Trades> <Trade> <Symbol>BHP</Symbol> <Price>38.12</Price> <Volume>10000</Volume> <Exchange>ASX</Exchange> </Trade> </Trades> Now WS-Eventing has a really nice feature in that subscriptions can force notifications to contain a header this header can...

  • POS or SOA Lite TODO

    I think Service Orientation has gone the way of J2EE/ EJB and needs to be pulled back like was done with POJO. I propose POS Plain old Services or POSA for Plain old services architecture. Rules. 1) There is only one rule and that is KISS.

  • Why use Queues ( MSMQ) in services ?

    Queues love them or hate them seem to be pretty popular.  I'm definetly on the hate side especially persistant queues Lets look at some recommendations Use private queues. Very few applications need public queues and the performance hit is substantial. Use non-transactional queues. Again, very few applications need transactional queues. System.Messaging is messed up in a lot of ways, but you can work around that. Use the asynchronous methods of System.Messaging (BeginReceive and BeginPeek) where possible. Learn to build your own formatter for System.Messaging. I...

  • .Net services message persistance

    Well looks like .Net services doesn't have persistant messaging ( no queues or persistance of subscriptions ) . This  will probably be address in v2 .  There is a 30 second message buffer for polling replies but this is not the same. This is especially an issue for mobile computing ( PDAs , phones etc which are often offline) and for wrapping  legacy systems.  Though its unlikely that legacy systems will be wrapped by .Net services ( more likely the service bus will redirect it to locally hosted services) . Im not a big fan of queues however.  See post.

  • What is Azure Services ?

    Are Azure services a cloud or are they an ESB ? While Azure does not have this it has FAR more than most ESB in terms of connecting clients to services. Sure it has router support Azure >> ESB  (Internet hosted , with integrated  internet security , scalable) Azure >> Cloud computing  ( not just Client - Service routing and hosting but also it has sender-receiver relay , multicast , firewall pass through ,   and enterprise-cloud security integration) The big thing is people see it as a cloud .. however i think the biggest thing is it can redirect clients...

  • Windows Azure services - First impressions

     I have been looking at the PDC cast of Windows Azure and all I can say is wow. At first i thought it was just another cloud but its a new generation compared to other offerings and most important its designed to win corporates. Integrating with current enterprise systems in a secure manner will be the key.  Will it succeed - certainly ( barring some outage disasters which will hurt them bad) . However it wont succeed just for Web 2.0 ( of which i am sceptical in the long term) but think of corporate laptops ,PDAs , small offices...

  • SO Analysis

    Lots of books and posts have been written but IMHO they fail miserably. - They involve a new language/diagram - They use propriatry tools - Focus heavily on BPEL and you need services to drive the BPEL (mmm) - They are overly complex. and hence violate the  most important rule KISS. I prefer a loose guideline like the following. Consider the large-grained logical services your systems represent (such as Accounting, Sales, Manufacturing, Design) Ignoring political / divisional boundaries, consider each large-grained logical service and conceptualize how it should be broken up into finer and finer...

  • SOA ESB and hype

    There is a huge amount of hype around SOA especially around the ESB.  Companies are wasting a fortune and it has been going on for a long time now. Here is one from 2005 http://blogs.msdn.com/richardt/archive/2005/05/04/414833.aspx Richard tried to distinguish from the hype by using the term just Service Oriented (SO) instead of SOA. The end result is companies are wasting HUGE amounts of money on consulting repositries frameworks etc . The thing with Service Oriented is its light and it doesnt matter ALL what matters is converting or wrapping your legacy code and that has been happening at a poor rate -...

  • Is SOA a Belief system and what does that mean for Team dynamics

    Best SOA posts on the net ( and the comments) http://blogs.msdn.com/richardt/archive/2005/12/13/503358.aspx This is what I believe SO is ... it truly is a belief system and a way of thinking. It is not a prescriptive architectural process or methodology. It's not a template that you can apply that results in a service oriented system. It's where art meets science. It's where aesthetics meets engineering. It's the thing adds a human touch to the things we create. It's inside of me and it's inside of you.... james governor said: i am with anil. a call for an epiphany is kind...

  • DTO pattern

    http://msdn.microsoft.com/en-us/library/ms978717.aspx http://martinfowler.com/eaaCatalog/dataTransferObject.html I still think Martin Fowlers description is best An object that carries data between processes in order to reduce the number of method calls. While DTOs were designed for the above they provide key benefits to distributed systems 1.Performance Typically Objects in OO have quite a chatty interface , this is good for design purposes as these communication mirror the relationships between the objects however the performance implications for distributed systems are significant and worse the worry about performance last mentality in software development makes a significant issue as these issues are VERY expensive to fix as the design from the start is...

  • Are projects getting more successful

    Im curious at the increase rate of sucess in a number of surveys such as the later CHAOS surveys. Looking in the detail however it appears that projects after peaking in 2000 the amount of time overrun and the amount of features completed have dropped dramatically in the vast majority of projects. Not sure what it means but to me it DOESNT mean software development is getting better if features are getting dropped  and there are increasing time blow outs. Things that come to mind Standards for success and projects have increasing amounts of over estimation to prevent...

  • OO with services

    Are OO code and SOA diametrically opposed ? In a lot of ways this is true services tend to produce very anemic object models however this merely reduces reuse which is a myth in OO for the majority anyway . However services have a unique but familiar problem . The contract of the service is critical it needs to be designed for  - The ease of use of the client  - For performance  ( ie chunky calls , many small calls can bring many services down to its needs) - To be upgradeable and allow backward compatibility. - Compatible with an...

  • How to write a good service contracts

    ... not hand craft wsdl   Custom messages reduce churn and change in the contract   Lets say you have this datacontract   [DataContract] public class WorkEntry { [DataMember] public DateTime StartTime; [DataMember] public TimeSpan Duration; [DataMember] public string User; [DataMember] public string CostCentre; [DataMember] string Comments; }   What can go wrong here ? Using public fields is good , its tight and if you need to do custom things you can refactor it easily.  I think there is nothing really wrong here however if this is a business object also i would be concerned.  The big gotcha maybe DateTime  , lets say you have some other systems in your company that use Java . Now Java systems...

  • Simple services and Linq for SQL - match made in heaven

    Im a pretty big fan of Linq for SQL and it works so well with services especially smaller ones ( especially when there are no updates) . The fact services are normally responsible for about 3 tables /conceptual domain classes mean you can quickly drag the 3 tables onto the designer and generate the code.   If the structure changes you just recreate the data. Lightweight data Light weight service Light weight testing Light weight procedural code. . These services are quick to write and easy to maintain,

  • Post by Frans Bouma

    Loved this post  so had  to emphasize and post it. "That's not the case. A framework user doesn't give a **** about how many different patterns the framework is using and how great and awesome it's internally and how it will ultimately evolve in the bringer of world peace. A framework user is interested in whether the framework takes care of things the framework user can't afford to spend time on. After all, the framework user can't afford to spend time paid by the customer on plumbing, on writing infrastructure code. The framework user is paid to write code directly...

  • Architecting for the team

    One of the major differences between the  oft and bad used example of building Architecture  and Software architecture is people.  When you build a building people know how to pour the concrete and a few specialized roles are imported electricians etc  but with software we are expected to know all. If you have been writing Windows Forms apps for years if the new project is a web app it is expected  that you know write a web application , the only exception seems to be with languages people seem to except a C# programmer cant write VB or Java  -...