Welcome to MSDN Blogs Sign in | Join | Help

SOA Symposium: SOA, Software + Services and Cloud Computing

I am presenting a discussion on SOA, S+S and Cloud computing later today at SOA Symposium. I have included the abstract for the talk and the slides that will be used in the presentation for anyone interested.

Organizations evaluating Software + Services and Cloud Computing offerings must first have a well thought-out SOA strategy in order to maximize the return on their investment. They must further understand how the Software + Services platform and the related emerging platforms can be shaped with SOA principles in order to establish a sound and standardized services eco-system that can build up on and extend service-oriented architecture implementations. This presentation will describe the relationship between these various paradigms, including detailed discussions of topics relevant to enterprise architects, software architects and infrastructure architects.

SOA Symposium: Understanding SOA Security Patterns

I presented a discussion on SOA Security Patterns at the SOA Symposium today in Rotterdam. The abstract fro the talk is included below and the PPT is attached for anyone interested.

Service-oriented solutions are distributed applications and therefore rely on many of the established security controls, practices, and technologies. However, there are distinct characteristics that make services and service compositions special. For example, designing distributed systems that will with greater frequency span organizational boundaries requires architects to understand threats associated with exposing such functionality on potentially hostile networks. This presentation walks through a number of the SOA design patterns that are specific to services, processes, and SOA security in general. In this talk we will introduce and explain these patterns and discuss how they can be applied to establish a secure foundation to service-oriented systems.

SOA Patterns

About a 18 months ago Thomas Erl approached a group of us at Microsoft if we could review the SOA Patterns work he was doing. Whilst doing the review I observed that the book was lacking any patterns describing how to think about security within SOA applications. We talked and decided to add two whole chapters on the topic - starting with material that we (Fred Chong, Tom Hollander, Wojteck Kozaczynski, Lonnie Wall, Paul Slater, Dwayne Taylor and Ward Cunningham) had created in patterns & practices about 5 years ago.

 

The book is now available (has been for about 6 months now - this post is a little dated :-) - but included the following security related patterns:

  • Direct authentication
  • Brokered authentication 
  • Data confidentiality
  • Data origin authentication 
  • Exception shielding
  • Message screening
  • Trusted subsystem
  • Service perimeter guard 

The book also includes a bunch more patterns - which when combined with other books like Enterprise Integration Patterns (Hohpe) and Integration Patterns (P&P) makes for an invaluable resource for understanding different approaches for designing distributed systems. I am also really pleased to see there is a SOA Symposium event in the Netherlands at the end of October where we will be presenting a bunch of this material. I will post more about this later this week...

 

Posted by Jason Hogg | 0 Comments
Filed under: , ,

Service Orientation Today and Tomorrow

Diegon Dagum has just sent out the release note for the latest edition of the Microsoft Architecture Journal. It includes a bunch of really interesting papers including one that myself and a group of my colleagues from Worldwide Services put together summarizing key design considerations for Software + Services and Cloud Computing. Because we believe that the full benefit from S+S cannot be gained by just focusing on implications for application design - our paper tries to capture major design considerations from a number of perspectives including that of: Enterprise Architects, Software Architects (including Integration, Application and Information Design), Infrastructure Architects - whilst also describing cross cutting concerns relating to security, operations and management. Enjoy!!

Some of the other articles also look really intersting so will try to report back in the coming weeks about key points from the other papers... in the mean time take a look here if you are interested.


Contents

  • Design Considerations for Software plus Services and Cloud Computing
  • Model-Driven SOA with "Oslo"
  • An Enterprise Architecture Strategy for SOA
  • Enabling Business Capabilities with SOA
  • Service Registry: A Key Piece for Enhancing Reuse in SOA
  • How the Cloud Stretches the SOA Scope
  • Event-Driven Architecture: SOA Through the Looking Glass
  • Is SOA Being Pushed Beyond Its Limits?

 

Posted by Jason Hogg | 0 Comments
Filed under: , , ,

SecPAL Parser Updated for VS2008 and F#1.9.6.16

I finally got around to updating the SecPAL Parser to run on the latest version of Visual Studio and F#. Development experience should be much cleaner now because F# is far better integrated into VS. If you run into any problems please post a note or drop me an email. For more information please see our SecPAL CodeBox Community Site.

 

A Graphical DSL for Describing SOA Applications

Last October we ran a SOA workshop in Redmond, with the goal being to have members of the MCS field, global practices and other customer facing organizations discuss scenarios and patterns that they see on a regular basis. Having run several of these workshops in the psat, one challenge that is hard to overcome is ensuring people describe their scenarios and solutions in a standard way.

Given the lack of a standard vocabulary for many (most?) domains within our industry this is obviously made more difficult. In an attempt to overcome this shortfall myself, Piyush Gupta and Sudarsan Srinivasan spent about a month decomposing a number of customer solutions into their constituent patterns - thus building a catalog of patterns that participants at our workshop could use when describing solutions to their scenarios. Where such patterns were already documented, we normalized on terms from sources such as Hohpe's Integration Patterns, SOA Patterns, Workflow Patterns, Patterns and Practices and IBM's dev center.

Even armed with a standard vocabulary, the next problem becomes how do you succinctly present complex system designs without requiring large numbers of UML objects. Christopher Alexander aluded to the solution to this problem through the use of a visual notation to accompany each pattern. So I searched around and found that Matthew Oskowis had created a nice little Visio template including icons for each of Gregor Hohpe's patterns. This helped us for about 50% of the patterns and so I extended it to include the additional patterns that we had identified.

When using this visual notation it became too difficult expecting everyone to recognize each of these icons, so I also extended each icon to include the pattern name. It makes the diagrams a little clumsy - but they are still quite readable. As you can see in the diagram below it is also obvious that these icons convey a lot of information in a small amount of space - more so than an equivalent UML model would for example. 

The diagram below illustrates one such example, where a service agent is performing requestor side caching allowing configuration information to be retrieved from a central configuration service and cached. The Configuration Notification Service also allows the client (should it subscribe) to be notified of changes to this configuration.

Requestor side caching

For my presentation for tomorrow's SOA BP conference I will be walking through a number of scenarios using this SOA DSL, so figured I would first post it on the blog for people that are interested in using it. If you use it or extend it let me know how you go, or share your updates.

Agent-Design Patterns for Building Distributed Service Bus Applications

Another blog that is several months late, but as usual, better late than never. I am currently preparing my presentation for tomorrow's Real World SOA: Microsoft SOA and Business Process Conference I finally made the time to read Danny Garber's paper on Agent-Design Patterns and it was well worth the read. Danny introduces the notion of a Distributed Service Bus (I think I have also heard him refer to it as an Internet Service Bus) allowing multiple organizations to collaborate on extremely complex business processes.

As with most business processes, these are subject to service unavailability errors, message translation and enrichment requirements, but because they span multiple organizational boundaries must also worry about routing across perimeter networks and error recovery in remote domains. Danny talks about how he has used a combination of Microsoft's ESB Guidance (predominantly the Itinerary pattern) and the Microsoft Global Practices Managed Service Engine (predominantly for routing across perimeter networks) to provide the DSB capability.

Are banks encouraging phone phishing attacks?

I recently called the support number to verify a charge on my Wells Fargo account and it surprised me when the automated teller requested that I enter my card number and then my pin number. I was always lead to believe that we should never share our pin numbers as that obviously breaches the security of our ATM cards - so I hung up and waited until I could talk with a customer representative. I just spoke with such a representative and apparently the bank is ok for you to share your pin number with an automated teller.

This seems very strange to me as how am I to determine whether in fact I am talking with an automated teller owned by Wells Fargo or an automated teller owned by someone with malicious intent. This possibility is greatly increased by the large number of phone numbers that the banks have - preventing me from even really knowing whether I am talking with Wells Fargo or not. This is made all the worse given the large number of phone numbers that banks appear to have nowadays. The enquiry I just made has had me dial 4 different numbers during which time I was also transferred 3 times - meaning I really have no idea who I am talking to. I can also imagine would be perpetrators obtaining numbers that are 1 digit off of major banks and obtaining ATM card information that way.

Is it just me or does this seem like a huge risk? Or is there something that I am missing here in terms of why this isn't a security risk? Also, do banks other than Wells Fargo also require customers to enter their pin numbers?

 

Posted by Jason Hogg | 1 Comments
Filed under:

Merry Christmas and a Happy New Year!

 I did a particularly lousy job of sending out Christmas cards this year, so figured I would instead make a last ditch effort to bring some joy to the world through my blog. As you may have seen we have had a pretty interesting winter so far in Seattle with record amounts of snow bringing the city to a near stand still. The photo below shows the Microsoft campus from my office in B117.  Merry Christmas (or Happy Holidays if the former offends you :-)) to all and best wishes for the coming year.

Snow at microsoft

Posted by Jason Hogg | 1 Comments
Filed under:

Sticky Notes for Your Code

If your desk is anything like mine it is cluttered with millions of sticky notes, each containing some snippet of information that at some point seemed worth writing down. If you have been dreaming of the day that you can have your VS environment look similar, then wait no longer! My good friend Pablo Galliano has the perfect solution.

Seriously though, Pablo is probably one of the leading experts at extending VS (in both natural and unnatural ways) and has written a cool little utility allowing you to add post-it notes to your code. Take a look here for more information.

Posted by Jason Hogg | 2 Comments
Filed under: ,

Distributed Computing Patterns

This one is a little late to press, but for those who haven't already seen it the Architecture Journal recently published an article on Distributed Computing Patterns that myself, Joshy Joseph, Dmitri Ossipov, Massimo Mascaro and Danny Garber wrote. You can find the article here.

Oslo MGrammar Turtle Graphics for VS2008

My colleague Joshy Joseph reminded me that the MGrammar based Turtle Graphics parser that I posted here was for VS2010. I have attached a newer version of the solution that Joshy coverted to run in VS2008. I noticed that Doug Finke has also done the same thing whilst also creating a couple of additional samples as well. Take a look at his blog for more details...

 

Creating a Logo / Turtle Graphics Textual DSL using Oslo MGrammar

In the early 1980's a programming language called Turtle Graphics was used as a means of introducing novices to programming on the BBC Microcomputer. Turtle graphics, a graphical version of Logo, helped introduce people to programming using a simple functional language that provided instant visual gratification allowing the user to move a triangular turtle across the screen using simple commands such as forward, backward, right turn and left turn.

At PDC this year the Connected Systems team introduced a new language called "M" - which allows textual DSL's to be created. I will talk more about this language in future posts especially compared with the F# Lexer and Parser that we used to create our textual DSL for SecPAL, but first I wanted to create a programming language with which to learn Mg. I thought a version of Turtle Graphics would be fun - and interesting for anyone else interested in experimenting with or learning Mg.

The programming language I am liberally calling Logo (and the associated interpreter) are fairly simple - but I thought it would be fun for people to play with, especially those with children who are looking for new ways to introduce their kids to progamming. I did the bulk of the work specifying the grammar for this simple version of Logo on the flight back from LA to Seattle - which should give you a sense of how intuitive Mg is - and how productive the Intellipad authoring experience is.

Given that Thanksgiving is just two days away I figured it would be patriotic (odd coming from an Aussie/Kiwi/Pom hybrid) to show how simple it is for this language to draw the United States flag - a design which obviously would make significant use of loops and nested loops. 

Logo Editor 

The screenshot above shows the output from this program. The complete logo program listing is also included below so you can see how complex objects can be created using a simple grammar comprising of just 5 commands:

    - Commands - Commands perform actions such as moving or rotating.
        Rotate n - Rotate 'n' degrees
        Draw n - Draw a line 'n' pixels long
        MoveAbs x, y - Move to an absolute position
        Move x,y - Move to a position relative to last move / draw command
    - Loops - Sets of instructions which are executde iteratively. Loops can be nested.
        Loop n { [Command] }

I have attached the full source code for this so that you can play with this yourself. The source code is based on the PDC (October?) version of Oslo which you will have to first download from MSDN. The language could easily be extended to include color, line widths, other types of lines such as bezier curves etc - which should provide a good introduction for anyone interested. Post pointers if you do anything fun with this.

In addition to the formal grammar for my logo language (logo.mg) the .zip file also includes a WPF interpreter that interprets the parsed output of our logo programs and converts them into WPF Path Geometry syntax. There is also a simple editor that allows you to edit and run our Logo programs - providing a nice easy way to start teaching your children to program. Or for yourself to start modifying the language as described above.

Enjoy!!! And (to those in America) Happy Thanksgiving...

// Logo (and Mg) sample program 
// Happy Thanksgiving!

// Move to top left
MoveAbs 25,25

// Draw five rows of stars
Loop 5
{
   // Draw ten columns of stars
   Loop 10
   {
   // Draw five points to make each star
   Loop 5
   {
         Rotate -54
         Draw 5
         Rotate 126
         Draw 5
   }
   Move 20 -1
   }
   Move -210,20
}

// Draw the lines next to the stars
MoveAbs 430,25
Rotate -90
Loop 5
{
   // Lines are 5 pixels high
   Loop 5
   {
      Draw 200
      Move 200,1
   }
   Move 0 15
}

// Draw the lower lines on the flag
MoveAbs 430,125
Loop 5
{
   // Lines are 5 pixels high
   Loop 5
   {
      Draw 410
      Move 410,1
   }
   Move 0,15
}

Posted by Jason Hogg | 6 Comments
Attachment(s): logo.zip

Geneva Identity Management Framework

For anyone who has followed my blogs around developing an STS or writing authorization policies you will be very interested in Kim Cameron's announcement at PDC of the Geneva Identity Management platform. Genvea includes:

  • Geneva Framework - A .NET framework for writing interoperable, claims aware applicatoins
  • Geneva STS - An STS integrated with AD. Supports issuance (finally) and consumption of Cardspace Cards. 
  • CardSpace Geneva - A federation client

In addition to these framework like components, there are also a couple of services (biult using Geneva) including:

  • Microsoft Federation Gateway - Provides the basis for the Microsoft Services Identity backbone - brokering access to Microsoft cloud applications and developre services
  • Microsoft Connector Services - Federates AD to the Microsoft Federation Gateway. Provides lightweight access to the federation gateway.
  • .NET Access Control Service - Next generation service (STS) that performs claims transformation. It receives authentication information and issues authz decisions. This includes a management portal and API's for managing and writing authz policies.

 I haven't had a chance to play with any of these tools yet, but will be very interested to see how the Access Control Service's capabilities compare with SecPAL... :-)

 

Microsoft Azure cloud OS announced at PDC2008

I am here at the PDC in Los Angeles having just watched Ray Ozzie and Bob Muglia finally present the next generation of Microsoft's Cloud Services / Software plus Services strategy with the release of our new operating system for the cloud "Azure"!

Windows Azure was designed from the ground up for the needs of cloud based computing models. It includes capabilities such as:

  • Scalable hosting - from a fraction of a server to many servers
  • Automated service management - fabric controller manages the health and lifetime of deployed services according to a services model
  • High-availability - replicated backend storage
  • Rich developer experience
  • Open platform - Command line interfaces, REST protocols, WS, Web…

As I watched the presentation it dawned on me some of the parallels between how existing operating systms are designed and the functions that will now be fulfilled by Azure. The diagram below shows a conceptual view of the core layers in existing operating systems, which are typically split between kernel mode and user mode where user applications are designed to be run.

Logically Azure follows a similar model having the Azure OS providing the equivalent of the kernel exept now running in the cloud managing a potentially limitless number of CPU's, memory and disk storage all hosted in the cloud.

Moving up a level we have the Microsoft Azure Services Platform. As with the executive in an OS taking responsibility for security, storage, I/O and IPC; Azure provides a host of similar capabilities. At the lowest level the Azure Services Platform includes support for .Net Services including a Service Bus, Access Control and Workflow Services. It also includes SQL Services. At a higher level the Azure Services Platform includes support for Live Services, Sharepoint Services and Dynamics CRM Services.

In terms of how applications can be designed to run on in this new cloud based paradigm the great news is that it is all through our existing tools and languages - Visual Studio and .NET. At the highest level in the stack where traditionally applications like Office would run, we now have online extensions to these products including: Windows Live, Office Live, Exchange Online, Sharepoint Online and Dynamics CRM Online.

Anyway, this post should introduce you to some key concepts and technologies that I believe are going to be critical to consider as you design distributed applications moving forward. I personally think this announcement and the associated announcements that you will continue to hear over the course of this week is the most significant change in our industry since the release of .NET.

 

Posted by Jason Hogg | 1 Comments
Filed under: , ,
More Posts Next page »
 
Page view tracker