Appistry Cloud Computing 1, Conflicker 0

Earlier this week I did a CloudIQ customer demonstration using one of our cloud infrastructure services partners, and I exposed one of the Windows workers directly on the internet. This partner expressly warns you not to do this, but I was trying to save some time and leverage some IP addresses that I had bookmarked. So for about two hours prior to the demonstration everything seemed to be working fine, then right before my demonstration one of the worker nodes CPU’s went berserk. I could see the machines CPU oscillating between 100% and 0%, back and forth, over and over.

Since the first rule of presentations is to never let them see you sweat, I decided to just ignore the rouge worker and pressed on with the demonstration. So I provisioned additional machines from the pool available hardware I have access to, those machines assimilated into my cloud flawlessly, came online and doubled the transactions/second of the demonstration, even while the rouge worker flailed. I then just dispatched the rouge node into the virtual bit-bucket and the presentation went off without a hitch! No harm, no foul.. very cool.. (Yes I know, never expose a Windows machine directly to the internet, lesson learned…)

Until next time!

Mark

Cloud Computing: Well, how did I get here?

I really feel there is an analogy that can be made between Cloud Computing and the lyrics of the David Byrnes/Talking Heads song Once in a Lifetime, “Well, how did I get here?” A Wikipedia article describes the song as dealing with a middle age crisis and the inevitable sacrifice of youthful ideals and dreams for conventional success…Only for Cloud Computing, I think it’s more like the youthful ideals of paying for what you use along with the availability of dynamically allocated compute capacity that will forever change the conventional wisdom of computing whether you are a startup, why again are you not using Cloud? or an established corporation looking for datacenter automation.

While a lot of people are still defining Cloud Computing including the WSJ on Thursday March 26th, “The Internet Industry Is on a Cloud -- Whatever That May Mean”. I think Appistry’s VP of Marketing Sam says it as eloquently as anyone when he describes Cloud Taxonomy: Applications, Platform, Infrastructure. So my goal with this blog is not to re-define Cloud Computing, but rather to help people understand how they can create, deploy and manage these dynamic cloud solutions in cost and time saving ways.

Until next time –

Mark

Happy New Year and time for some demo code!

Happy New Year!

Wow, it’s been a while since I've had a chance to write a post as it’s been a whirlwind beginning of a year already!

Last week we had a chance to visit 6 European cities in 6 days as we talked to a number of companies about using our Enterprise Application Fabric (EAF) to solve a wide variety of problems. So thank you to everyone we talked to in Prague, Munich, Frankfurt, Erlangen, Zurich and London! (We didn’t intend to go to Zurich, but the events in London on January 16th gave us a chance to experience the cities hospitality…)

We have also had a large number of new product evaluations taking place over the last couple of weeks, so I wanted to post a couple of Visual Studio project templates that I use for training purposes in an effort to help those of you who are using Visual Studio.

This first example is a simple Hello World that illustrates how we use annotations and Reflection to inject and retrieve values from a class. While my example uses simple data types, you should know that we support rich data types, custom data structures and can even pass native data types between .NET and Java applications within a single EAF application, so goodbye isolated application deployment environments and hello fabric!

I’m also using our new MulticastSocket API for multicast messaging. This API is one of the new features that can be found in our upcoming 3.7 release.

To use this C# project temple, put this zip file into your \Visual Studio\Templates\Project Templates directory and select the File / New Project menu item from Visual Studio, then select Fabric_Task_HelloWorld from the My Templates Section of the New Project dialog box.

using System;
using System.Collections.Generic;
using System.Text;
using Appistry.Task;
using Appistry.Implementation;
 
namespace HelloWorldObject
{
    public class Class1
    {
 
        // MulticastSocket is a new API that allows Tasks
        // to send multicast messages to Log_monitor via 
        // the send method and also provides an API for 
        // retreiving the local machines TCP/IP address
        private static MulticastSocket messageSocket;
        private static System.Net.IPAddress localIP;
 
        public static void OnStartup()
        {
            messageSocket = new MulticastSocket("239.255.0.78", 4001);
            localIP = MulticastSocket.GetMachineIPAddress();
            messageSocket.Send("Setup done in: " + localIP.ToString());
        }
 
        // The ITaskRequest annotated with TaskRequest works
        // just like the v2.4 product (eg. request["MyValue"])
        private ITaskRequest request;
 
        [TaskRequest]
        public ITaskRequest mRequest
        {
            get { return request; }
            set { request = value; }
        }
 
        // The TaskProperty annotation allows you to pass fabric 
        // request values to existing class properties.
        private int myVar;
 
        [TaskProperty]
        public int MyProperty
        {
            get { return myVar; }
            set { myVar = value; }
        }
 
        // You can also add TaskReturnValue and TaskParameters to pass
        // fabric request values to your existing applications
        [return: TaskReturnValue("Hello_Return")]
        public string Hello([TaskParameter("in_arg")] string in_arg)
        {
            messageSocket.Send("Hello from:" + localIP.ToString() +
                " Request ID:" + request.Id);
            return myVar.ToString() + " " + in_arg + " " +
                localIP.ToString();
        }
 
    }
 
}

The final thing I want to point out is that I like to package and deploy my applications during the post-build event. So I have included the following commands in the projects Build Events -

fabric_pkg CS_App.xml

fabric_ctl -ufabric-admin/fabric-admin -d239.255.0.1:30000 deploy HelloWorld_App.fabric

You can use the log monitor to watch the fabric workers messages -

C:\log_monitor 239.255.0.78:4001

To call this fabric application from a client, create a C# Console Application and add the Appistry.NET dll found in the \Program Files\Appistry\System directory to your projects references.  Here is the simple client for making a single fabric call -

using System;
using System.Collections.Generic;
using System.Text;
using Appistry.FabricAPI;
 
namespace Fabric_Client_Sync
{
    class Fabric_Client_Sync
    {
        static void Main(string[] args)
        {
            Fabric fabric = new Fabric("239.255.0.1", 31000, Encryption.NONE);
 
            FabricRequest request = new FabricRequest("Hello_App", "CS_Process");
            try
            {
                //Put the request[""] values being sent to your task/process flow here
                request["MyProperty"] = 100;
                request["in_arg"] = "Hello World";
 
                fabric.Execute(request); // Synchronous invocation
 
                //Retrieve your results here
                Console.WriteLine(String.Format("{0}", request["Hello_Return"]));
 
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                request.Dispose();
            }
 
            Console.WriteLine("All done, press any key to continue..");
            Console.ReadKey();
        }
    }
}

We have a lot of great plans for 2008 and one of my New Years resolutions is to publish a lot more code this year, so get ready!

I also wanted to thank Manoli.net for a feature they have that formats and maintains the color coding for C# code. (http://www.manoli.net/csharpformat/ ) It really makes my code look great! (OK, well at least it’s aesthetically pleasing… )

Let me know if you have any questions or comments...

Until next time!!

Mark

Categories:

Outsource Reliability?

I just received a new ObjectWatch newsletter by Roger Sessions and it really struck a cord with the Enterprise Application Fabrics Scalability Simplified message that I’ve been evangelizing.

The latest newsletter describes a process coined by Roger called Simple Interactive Partitions (SIP).  The basis of which is a process based on a mathematical model for simplifying enterprise software's architectural complexity.

Within the three SIP whitepapers posted on the ObjectWatch site the Executive Overview outlines the five phases of the SIP process.  The step that really hit home with me was step 3, Partition Simplification which describes the removal of extraneous, redundant, or outsource-able functionality.  Which got me thinking why someone wouldn’t outsource reliability & scalability to the Enterprise Application Fabric?  What’s the engineering cost of developing something that can be found in a packaged, vendor supported solution?  It took us 6 plus years of engineering effort.  Do you have 6 years to do the same?

If your ready to lower the complexity of your enterprise solutions, read the SIP briefing papers, get a copy of Roger Sessions new book Controlling Complexity in Enterprise Architectures when it’s released later this year and give us a call!  Preferably not in that order as we can help you today!

Great process Roger, I look forward for the book!

Until next time...

Mark

Enterprise Application Fabrics – It’s not just a job!

One of the blog’s I’ve been following (besides Bob’s here at Appistry) is Marc Andreessen’s from my old nemesis Netscape. I really have enjoyed some of the insights Marc has shared around startup’s, VC’s and most recently, Career Planning.

In his career planning post, he shares a couple of rules that really resonated with me and I think they are worth repeating. Marc’s career rules –

  1. Do not plan your career – His point is that with the pace of technological change, it’s difficult to guess what’s going to happen in the future. And that career planning could be career limiting over the long haul.
  2. Instead of planning your career, focus on developing skills and pursuing opportunities – Here he elaborates on opportunities. The Opportunities that present themselves to you and those that you go out and create.

What really struck me about the second rule related to how the technology decisions we make during the course of our careers affect our future career opportunities.

During the course of my career at Microsoft, I got a chance to focus on a wide variety of technologies including operating systems, networking technologies, programming languages, relational databases, internet technologies and enterprise resource planning solutions. Each technology served as the foundation to learn something new. The seemingly random-career-walk through technology didn’t just linearly evolve, it morphed through unforeseen technologies that each contributed to some greater thing. (OK – Cue the black obelisk and 2001 Space Odyssey sound track) The reason I make this point, is that Enterprise Application Fabrics were a natural step in the evolution to my technology skill set. Fabrics leverage everything I know about databases, programming languages, operating systems and line of business solutions to create solutions beyond anything I could have imaged during my career. Fabrics allow me to leverage unforeseen opportunities!

OK, enough with the Space Odyssey. Are you ready to evolve your career and skill set to address unforeseen opportunities with Enterprise Application Fabrics?

Call us and we can tell you how to advance your career!

Until next time….

Mark