August 28th, 2007
I have been asked about how we support SOA many times over the last few months. The emergence of SOA as an architectural paradigm has been a huge influence on the middleware software market. You can’t find a middleware or integration platform today that doesn’ t pitch how great it supports SOA. Having built a couple systems with SOA technologies I can tell you that most of that hype is misplaced. SOA is really a combination of two main features. First it is an agreement by everyone to use the same syntax for interface invocations and second its a way to organize your software system’s capabilities. The first feature is enforced by standards like WSDL, SOAP, and UDDI as well as recent additions like the SCA, SDO, and of course the collection of WS-* standards. The second feature however really can’t be enforced. To me the web service standards are important but I would say the organization of software into services is really the critical feature of a SOA.
Sam Charrington in a recent interview had a great quote that I’ll repeat here about how Appistry helps in a SOA architecture:
"SOA is great about providing agility from the perspective of software infrastructure," he said. "What SOA doesn’t help with is agility as it pertains to physical infrastructure. If you have a service that is mission-critical, you end up being encumbered by a traditional IT approach."
With a traditional IT approach, if a service really takes off, Charrington said, organizations may think they have to put it on an expensive box to meet availability and performance demands. "But this is not the agility of SOA; it takes away from the huge benefit of SOA."
This is where virtualization comes into play, he said. "By virtualizing applications across a commodity infrastructure, managed by, or as part of an application fabric, you’re able to get the full benefit that SOA offers."
So basically Appistry’s EAF become the "service container" in a SOA stack. Once you have an ESB and expose your services with a WSDL interface where do you actually run your services? You can continue to run them on legacy hardware after integrating with the ESB if you wish. But at that point is when I ask my favorite question, "What happens if it works?" Basically what happens if all your efforts come to fruition and people actually start using your services? There’s really no reason to build a SOA if that’s not what you want to happen. So what do you do when you have to scale your services beyond your legacy hardware’s capacity? That’s when you need agility at the hardware layer. An application fabric is the best way to bring the promise of SOA full circle to the hardware architecture. That’s why I came up with the phrase, "The last mile for SOA". You can get close to a full SOA without an application fabric, but you may end up pushing your integration pain into a scalabilty problem pretty fast. But with Appistry’s EAF as the service container, you don’t have to worry about that either and you get the full benefit of the dream of a true service oriented architecture, not just a way to call code over web services.
-jasen
Technorati: SOA, architecture, service, container
Posted in Uncategorized, fabric, SOA | No Comments »
August 21st, 2007
In order to break my slump I thought I’d give a quick description of a project I recently worked on. I was helping set up a demo of an application that was moved onto the fabric. The app was written in C and we didn’t change any of its code. We ended up running it by shelling out from Java to make it easy for the developers who didn’t know C. The person asking for the demo wanted to see our reliability feature but didn’t want to see the usual hardware demo we give which involved pulling a power cord or network cable. So I had to invent a software bug that would illustrate how an application can be made reliable by running it on top of Appistry’s software.
So to make a short story long, here’s what my first try looked like:
Random generator = new Random(System.currentTimeMillis());
if( (generator.nextInt() % 4 ) > 0 )
{
doSomething();
}
The basic idea being that by generating a random integer in the code running on the fabric I could then use the modulo operator to inject a bug about 25% of the time. Because it’s random, it would be unpredictable (the best kind of bug). The modulo operator would give me values from 0-3 and therefore if I got a 0 I would run the bug:
else
{
throw new Exception();
}
The error case just throws an Exception because the fabric will attempt to retry the job if an unchecked exception is thrown. We tested out our new bug and it didn’t work. It was running the error case way too much. So basically I had a bug in my bug. After reading the javadoc on the Random.nextInt() method I figured out that it will generate negative numbers! So I added the following fix:
if( Math.abs(generator.nextInt() % 4 ) > 0 )
Now I get my 25% failure rate like we wanted. We show the client running and submitting a handfull of requests to the fabric. Then, on the log on, the fabric, we show in realtime that the failure randomly occurs. But when it does, the job is automatically resubmitted on the fabric and the answer is sent back to the client. The client doesn’t have to be concerned with retry logic and only gets its correct answer.
I thought a cool web demo would be to use Ajax and setup a button for people to cause a software bug to happen while the results are coming back to the browser in realtime. Maybe I’ll write that in my "spare" time…
-jasen
Posted in Uncategorized, programming, reliability, fabric, java | No Comments »
July 6th, 2007
I have some friends that run the online community GrupThink. I went and signed up for an alias and added a grup for posting programming cookbook questions and answers. The Perl Cookbook was the most valuable book to me when I was learning Perl and I always look for content like that when picking up a new language. I envision people posting questions and getting replies with code examples. It could become a repository for multiple languages…or not…whatever.
I posted the first question asking how to write an infinite loop in BASIC. My first 100% original program was this:
10 PRINT "KMart Sucks!"
20 GOTO 10
I used to type that in on the computers on the shelves and then walk around the store for awhile. The monitors would be scrolling with the message and there was no way to stop it unless you knew how to break the interpreter or shut the machine off. I caught employees several times shutting the machines off which made me very happy, it meant that I won. I must have been like 10 years old when I was doing that stuff. What a nerd.
Posted in programming | 2 Comments »
July 6th, 2007
Well, I finished the show and made it home. On the last day, the crowd was mostly into the tech talks and not interested in the vendors so much. I talked with a few of the people there, like the Azul guys. I also talked with the IceFaces guys about maybe doing a demo together. Appistry could be the back end hosting some business logic and they could be the front end gui. It would be the merger of AJAX and grids. That could be really cool. The future of Java looks really fragmented. There is no denying the influence of the Spring and Ruby communities in the enterprise software world. SOA looks non-existant. There are a ton of web frameworks now. I hope that shakes out a little. Java is starting to show its age a bit. People have been predicting the death of JEE for some time and judging by the shows I’ve been to I think it’s already happened. Who’s writing new software for JEE? Nobody, as far as I can see. Its all about Spring/Hibernate apps with AJAX front ends. Some variations exist here and there, but that’s pretty much the de facto.
After the show was over, I managed to hike around Barcelona for a couple of days before coming home. I saw some great sights but I started wishing I knew more Spanish. I went to have lunch in a small place that looked tourist-friendly. They were off the beaten path, but it looked like thier menu was translated into English so I thought I was safe. But when I sat down and asked the waitress, "Habla Ingles?" She replied, "No, cero." Which means, "You stupid American tourist, there’s no way I’m going to make this easy for you." So I then decided to try to describe a sandwich by miming two pieces of bread with my hands and saying, "Pan con carne?" She said, "No," and showed me a hand written spanish menu with 5 items on the top and 5 items on the bottom. I recognized "spaghetti" so I pointed at that. Then she wanted me to pick something from the bottom list also and said something about "carne" so I figured it was the meat course or something. I pointed blindly at something on the list and hoped for the best. She went to the next table and sat down with them, I heard them repeat the two things I ordered and laugh. That’s always a good sign when you’re in a foreign country. But it turned out I just ordered a sausage. It was pretty good.
All in all, I’d say Barcelona is a great place to visit. I’d highly recommend it. It was no coincidence though that the first night I was back home we went to CheeburgerCheeburger and I ordered a quarter pound burger with a milkshake.
-jasen
Technorati: java, appistry blog, appistry blogs, java, java conference, application fabric, TSS, Spring
Posted in java, Spring, open source, TSS | No Comments »
June 28th, 2007
Well, day two picked up a little. I attended some fun sessions and the crowd seemed to warm up a bit. My favorate session was the GWT presentation. Brian Johnson gave a talk and explained the basic premise behind the toolkit. I was really into it and I am definitely going to download it and see what I can do. I didn’t realize that it’s actually open source. That is rare for Google, so I am impressed. The other neat talk was by Ola Bini on JRuby. I liked seeing the Ruby syntax invoking Java objects. That was really cool. It made me start thinking about how lambda reduction and aspects are really the same thing. I should pitch that idea to the Spring contingent tomorrow and see what they say.
Last night for dinner we took the local metro subway to the waterfront and ate at a place called 7portes. It was awesome! We had paella and it was one of the best meals I’ve ever had in my life. The salad was good, the wine was good and the main course was amazing. The music was funny though - they had a piano player who was playing American hits from the 80s like Richard Marx, which was a little weird. But other than that, it was cool. The metro was pretty neat. You can get all over town once you learn to read the color-coded signs. So, this weekend, I’m going to visit several museums and go to the beach. I can’t wait!
-jasen
Technorati: java, appistry blog, appistry blogs, java, java conference, application fabric, TSS, Spring
Posted in Spring, TSS | No Comments »
June 27th, 2007
We are doing the European TSS show and I thought it would be fun to do some daily posts like I did for JavaOne. I have noticed some interesting cultural differences between European techies and us Americans. First of all, they don’t care about slinkys as much here. We couldn’t keep our free slinkys on the table at JavaOne, here people always look at them and keep walking. We have given some away, but people always laugh at them like they’re ridiculous. A couple British people take them, but they always ask first which is also uncommon. So to summarize:
1) Americans: love slinkys, will try to trick you to get one for free, aren’t bringing them home for kids (that’s a lie they want it for their office to play with)
2) British: partially amused by slinkys, will apologize for thinking of taking one, bringing them home to make fun of Americans
3) Germans: think slinkys are foolish, will stare at you silently if you offer them one, may take one home to show kinder (children) how silly Americans are
4) All other Europeans: think slinkys are part of our product, don’t realize they are toys, may take one home to beef up their car’s suspension
As for Appistry’s software however, there is a lot of interest, especially by GigaSpaces employees. (I know they monitor use of their company name on blogs so this is a meta-joke to see if I can get their CEO to come say "Hi" to me.) But seriously the crowd is full of architects and developers and they like to discuss how to scale Java appllications on commodity hardware. They always ask great questions that show that they are engaged and are thinking about our solution. From that perspective all the countires are on the same page, they don’t like complexity and expense. Offering a simple easy to use product that cuts processing costs by an order of magnitude makes sense no matter where you’re from.
-jasen
Technorati: java, appistry blog, appistry blogs, java, java conference, application fabric, TSS
Posted in fabric, grid, TSS | 1 Comment »
June 20th, 2007
I ran across this cool post on a Natural Language Processing blog. The site distributes a tool that I’m using for an NLP project as part of my masters degree. The post discusses how they refactored to use generics and has some great discussion and recources on the topic.
"My major complaint about Java when I first saw it was the lack of parametric typing. Many, if not most, of my programming errors are from assigning something to the wrong argument. I’m hopeless in Perl, for instance. As always, be careful what you wish for. Little prepared me for the complexity of Java 1.5 generics." Read the entire post here.
Posted in java, Natural Language Processing, Artificial Intelligence | No Comments »
May 25th, 2007
I have been doing some reading and a few weeks ago I came across an article by Corey Klaasmeyer on JavaWorld’s website. He discusses the original definition of what a "grid" is with some of the history. For example he quotes Ian Foster and Carl Kessellman from The Grid: Blueprint for a New Computing Infrastructure as saying, "A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive and inexpensive access to high-end computational capabilities."
By this definition Appistry’s EAF qualifies. But then Corey goes on to discuss the evolution of the definition and how Ian Foster has defined 3 requirements for being considerred a grid. According to Ian a grid:
- Coordinates resources that are not subject to centralized control;
- Uses standard, open, general-purpose protocols and interfaces; and
- Delivers nontrivial qualities of service.
So Appistry again easily meets 1 & 3 above. However 2. is debatable. We have our own xml based meta-data syntax that we use to coordinate task execution. We have discussed exposing this as WSDL and BPEL (which would be much more verbose) but then at least it would be "standard". We are based on good old TCP/IP and UDP/IP so that sounds like general-purpose protocols to me. So basically if I provided a set of XSLT transforms from our succint meta-data syntax to WSDL and/or BPEL would that then make us a true grid by Ian Foster’s definition?
Corey and I met for lunch today and discussed this idea and other things over awesome food at Illegal Pete’s in downtown Denver. Ultimately I think we both decided that Appistry isn’t the purist form of a grid, but that we were compatible with it. We also discussed the industies move toward using the term "grid" in a larger way in the market place. Fuzzy’s blog discusses this concept and refers to others who attempt to define the classes of grids that exist in the market place today.
We don’t like to call our product an application server or a cluster because that term has so much baggage. If we just call it a grid then its not clear how we are different than the efforts of the original father’s of grid computing. So we’ve settled on the term "virutualized grid". It would be cool to hold a vote to see how developers and architects describe software in this space. Maybe Slashdot could do a poll. I would vote for Cowboy Neal Grid.
-j
Posted in reliability, fabric, grid | 1 Comment »
May 18th, 2007
I just read an interesting thread over at Panic from Fuzzy’s blog. Here is the thread…
My favorite commenter Cameron Purdy of Tangosol/Oracle engaged in a friendly exchange with Fuzzy about the economics of releasing software as open source rather than keeping it closed and charging for licenses. I am a big open source advocate and I proudly wear my OpenBSD shirt in public. However I have never worked for an open source software company. I don’t think that many people do actually.
Appistry is not an open source company, although we love open source software and are very careful not to lock in our customers. I was very impressed with our CEO, Kevin Haar, when he advocated for adding even more features to our product to make it easy for customers to remain decoupled from any of our proprietary APIs. However, we still charge money for our product and we don’t publish the source code. But does charging money make us evil? I don’t think so or I wouldn’t work here. Fuzzy is clearly a strong open source advocate, but if you follow his argument to the extreme does that mean software should always be free? Cameron points out that the amount of revenue made at a service company is much lower than a product company. So are we here in the good old USA now supposed to give everything away because Apache and JBoss do?
I don’t know the answer, I only know that I like writing software for a living, and as long as companies like BEA and IBM are charging for their software and making millions then why can’t everybody else try? One of Fuzzy’s points was standards, I totally get that. Being a software architect, I have been careful to leverage standards whenever possible. But if a product doesn’t lock you in architecturally and has years of intellectual property built up to help solve a problem, why can’t you charge for it?
I don’t think the whole software community wants to work as consultants during the day just so they can code open source apps at night. There will always be a product market as long as the product 1) works and 2) makes sense economically. I know full well that as our technology becomes more broad there will be a call to build an open source platform that is similar. That’s fine, even JBoss doesn’ t have 100% market share. And it never will, service companies cannot scale to the necessary size so a vacuum will always exist for product companies that can afford to support customers because of their license revenue. So the waxing and waning of products and OSS will come and go. But there will always be free software and there will always be commercial software. That’s just the rules of the game now.
Or not. If I was any good at making predictions about software I would have bought Microsoft stock back in the early nineties. What can I say, I thought Windows 3.11 sucked.
-j
Posted in fabric, grid, open source | 4 Comments »
May 12th, 2007
I’m a little behind schedule on this post. We found a piano bar and didn’t get back to the hotel until early in the morning. I can still hear the chorus to Tiny Dancer ringing in my ears.
The last day of the booths being open at JavaOne was awesome. We had a lot of people wanting to talk about how to solve problems. It’s great to see people really resonate with our solution. I was in one discussion with a guy named Mike Moleschi from the University of Oxford who presented an x86 emulator that ran on a Java VM. It sounded really awesome. He is also part of the group working on the Nereus Project which is a "Massively Parallel Computing" platform. I am definitely going to have to play with the x86 emulator. I have some old DOS games that I’d love to play again. I told my wife that saving those boxes of old software would come in handy someday.
All in all, JavaOne has been a perfect show for Appistry. The attendees that come to the show are thinking about issues they need to solve and are looking for ideas. I really enjoyed engaging with so many developers and architects. The domains were diverse and interesting and the people were friendly.
I ended my San Francisco trip by shopping a little in Chinatown before catching a shuttle back to SFO. Downtown San Francisco is an awesome place. I hope to see you next year. Maybe the slinkys will make a come back.
-j
Posted in fabric, java, JavaOne | No Comments »