Nov 25, 2012

Why SaaS?

Greetings!

The temperature has cooled down here in North America and winter is around the corner. It is still relatively warm and in the cold weather it's nice to write about some warmness, which is SaaS! Sure, everyone knows the latest success of Workday. The question is why or how SaaS is succeeding in the marketplace? This may not be true for all applications but definitely business applications are going towards SaaS model.

IMO, there are 3 main factors for the success of SaaS:
  1. Runtime Environment
  2. Data
  3. Mobile
Let me first highlight few points from a SaaS innovators summit that I recently attended here in San Francisco. This summit included select group of technology executives, VC's and CIO's. The tech executives are all pro-SaaS and no need to highlight anything. One investor made an interesting comment: from Sausalito to San Jose, I make investments only in SaaS for enterprise applications!

I will highlight the CIO panel here and if you want to hear more about the summit, please ping me separately. (uday dot s at-sign comcast dot net)

There were 4 CIO's from big corporations. The moderator started the discussion asking about what % of applications are SaaS today? The answer was 90%, 50%, 25% and 20%. Then moderator said it makes sense to ask first 20% and 25% CIOs about SaaS adoption. For everyone's surprise they both said they are going to adopt SaaS aggressively in next few years!

  • 20% CIO
    • I am sick of having repeated discussion with CFO about "do more with less". If it is SaaS, its just a binary discussion. I just need to pick the right vendor. I am also sick of dealing with servers to DBA!
  • 25% CIO
    • I don't expect any IT application developers in my organization in 5 years from now. They will be doing something else! 
  • 50% CIO
    • He was interesting. His acceleration from here onwards going to be cautious. He is taking safer approach/too much legacy and will have hybrid environment. But he was super supportive of SaaS too.
  • 90% CIO
    • He said, don't ask me when is the next 10%. I am just wearing CIO hat for this panel as my official title is already changed! I don't have any legacy and so it was easy for me to take SaaS route from the beginning.
The common theme across all 4 CIO was:
  1. Support of SaaS model.
  2. Need to handle legacy environment and migration is taking time.
  3. SaaS integration is painful even today. We need a solution that can integrate many SaaS apps.
  4. Not outsourcing Active Directory any time soon.
  5. BYOD is real.
This event was in 48th floor in TransAmerica Pyramid in San Francisco (lovely conference room- if you are on the window seat and you can turn towards wonderful bay-view if the speaker is boring!). After the event I need to take 2 elevators to come to ground and another 12minutes cold/crispy late evening walk to garage to take my car. All along I was thinking about one thing: "IT ecosystem is changing for ever".

OK. Lets get back to the 3 factors that I highlighted in the beginning of this article.
  1. Runtime Environment
    • Before, the product team builds a software product on a particular OS. Then they have to port to different OS to support wider market. This is pain. 
    • Now, the software products are distributed applications. It no longer runs on a single desktop or a single server. You have a complex network environment with distributed servers and storage systems as runtime environment. It is not an easy task to reproduce the application in another environment for deployment. This is more painful. Here is an example of politely saying 'no': http://bit.ly/U3RN9C 
    • The summary is "single runtime environment" is a blessing for product teams in SaaS. It is even more blessing for IT team as they don't have to deal with software upgrades as there is no software in the first place!
  2. Data
    • In the past, all software product teams have to deal with sample applications and seed-data to perfect their software. Then they will discover "real bugs" in the customer environment! Then release service pack after service pack to fix bugs. It was a painful experience from product teams to marketing to sales to customers.
    • In the SaaS model, product team gets "real data" and "real use cases". Then they discover bugs in their own backyard (data center) and quickly fix it. The pain stays with the product team itself and nature forces them to perfect the application quickly!
  3. Mobile
    • The enterprise is increasingly accepting BYOD for accessing any-service, any-time, any-where in any-device model. This model aligns well with SaaS than behind the IT firewall with VPN challenges.
Ok. Good. Let's take a step back and ask the 2 Marc Benioff's questions:
  • In 2000: Why enterprise software is not like Amazon.com?
  • In 2009: Why enterprise software is not like Facebook.com?
My answer is that software teams were frustrated with many runtime environments and lack of data to perfect the product quickly in the old enterprise software model.

If you are still not sure about SaaS, please read this article:
"What went wrong? U.S. Airforce blows $1 billion on failed enterprise software"

Summary
The SaaS is clearly succeeding in the business applications. The enterprise IT is going through a major transformation now. The IT has reached an inflection point now with SaaS. The role of CIO is going to be even more critical for any business to succeed in this globally competitive environment. CIOs are  dealing with BYOD to legacy to SaaS to data security and more! There will be many, many applications that will continue to run inside the firewall. There is no question about it.

May 20, 2012

Apache Cassandra Database

Greetings.

Note: I like innovative products that solve customer problems. Cassandra is an innovative product. So I like it. The summary of this blog is that "Cassandra is yet another database" with different design principles.


Caution: If you are having data-scaling problems in your application, blindly moving to Cassandra is NOT going to solve it for you!. It's a 1.0 product and you should evaluate it carefully with your needs before you commit to it.

Database

The title of this blog may be confusing to you, if you have "read-too-much" about NoSQL. Let me tell you- Cassandra is a database. Period. There is nothing wrong in calling it as database. I would even say that calling Cassandra as NoSQL is even insulting to it's capabilities. It has richer + sophisticated data structures for applications.

What is database? 
Database is a piece of software that organizes data and makes it available for applications.

There are many types of database and RDBMS is *just* one of them. Unfortunately/fortunately, RDBMS was so successful in the past for a very long time(3 decades), the name database was hijacked to refer only to RDBMS.

So, what is Cassandra?
Oracle  is a "row-oriented" database.
Cassandra is a "column-oriented" database.

All I am trying to say here is that Cassandra is a database and there is nothing wrong calling it a database!

NoSQL

To build any serious application, you need query language. You can call them what ever you like but you need it. You can't build app against *just* key-value store. Cassandra is not just key-value store. In the same context, Redis is also not just key-value store. I "think" MongoDB is also not just key-value store. I read it as document-oriented database and I haven't had a chance to look at it closely.

You see here- all 3 popular so-called NoSQL are all not just key-value stores. This is to get the fact straight.  Cassandra supports SQL! Oh,yes, it's called CQL. I have no problem with it. I like Cassandra SQL. Let me highlight 3 CQL here-


CREATE TABLE Fish (KEY blob PRIMARY KEY);
SELECT * from People;
INSERT INTO NerdMovies (KEY, 11924)
      VALUES ('cfd66ccc-d857-4e90-b1e5-df98a3d40cd6', 'johndoe')
    USING CONSISTENCY LOCAL_QUORUM AND TTL 86400;


You can read the rest here:
http://www.datastax.com/docs/1.0/references/cql/index

All I am trying to say here is that Cassandra is a database and there is nothing wrong calling it a database!

Multi-Tenant

Can you use Cassandra as a primary database to build multi-tenant SaaS applications? 
IMO, the short answer is "no". 

The long answer is that you need to use OPP (order preserving partitioner) to support the range queries for multi-tenant applications with composite keys. Datastax documentation clearly says why it's a bad idea to use OPP. Sure, there may be work-around and I don't want to design an application against work-around! Drop me an email, if you want to know more about my research here. (uday.s@comcast.net)

Side note
a) Cassandra is a 1.0 product.
     It is evolving rapidly and you will see inconsistency between pre/post 0.8.

b) Documentation is challenging. 
    Your friends are Datastax, StackOverflow and blogs. Be ready to spend time to research for information and don't get frustrated easily.

c) Cassandra is written in Java! 
    I saw inconsistency between cli and server. I have to reboot it. I saw Java exceptions on the server. Even though I spend most of the last decade @Sun/Java, I am not a fan of databases written in Java. You need to be close to metal when it comes to databases.

Summary

Apache Cassandra is a "column oriented database" written in Java and has a good promise.

Feb 4, 2012

Node.js

Happy New Year - 2012!

There are lots of optimism and hope for 2012 in the tech world compared to last few years. This optimism brings new energy and new energy brings new innovations. One of the new innovation that may become mainstream in 2012 is Node.js!

What is Node.js?
A new server-side web framework using JavaScript. It's a wrapper on top of v8.

What is Node.js? (engineering definition from the web site)
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

What is the website for Node.js?
http://www.nodejs.org/

What is v8?
It's a JavaScript Engine from Google.

Where is v8 used?
Google Chrome browser.

Who is the lead engineer for v8?
Lars Bak

Who is Lars Bak?
He was a former Sun engineer and was the lead for Hotspot JVM. If you have to count the top 10 VM engineers in the world, it's safe to say that Lars will be one of them. His engineering track record speaks for it.

Why do I think Node.js will succeed?
1) Google's V8 JavaScript engine (Lars Bak + other engineers)
2) Strong community
3) JavaScript


What is the use-case of Node.js?
Real-time communications in the web properties.


How strong is the Node.js community?
Very strong and is growing.


Is Node.js is just a framework or an ecosystem?
Node.js is a framework and it has got a strong ecosystem around it. I mean the libraries.


How big is the ecosystem?
http://search.npmjs.org/#/_browse/all
is the answer. You can see how many libraries are already available for Node.js.

How to install programs in Node.js?
NPM (Node Package Manager)
http://www.npmjs.org/


Finally, Is Node.js competes or compliments Java?
Currently, its a complimentary framework. If this momentum continues (JavaScript for both front end and back end), Node.js may become the Tier-1 in the server-side web computing. I don't think it will replace Java but clearly lot of other frameworks like PHP, Ruby, Python, etc will take a hit with the growth of Node.


Summary
There are 2 factors that are highly influencing and favoring Node.js now.


a) Server-side JavaScript framework
The importance of JavaScript in the web computing is increasing on a daily basis and server-side JavaScript was discussed/debated for many years. Lack of good server framework made it challenge for JavaScript to succeed in the server side for long time and Node.js is the answer for it.

b) Real-time communications
In both side (consumer web & SaaS), there is a high demand for real time use cases and Node.js is becoming answer for it.

Do Yourself A Favor in 2012: Learn JavaScript!




Nov 25, 2011

Adobe Flash vs Apple Talk

Greetings. I hope my readers in USA had a great Thanksgiving and enjoyed the break.

2011 is coming to an end. This is yet another interesting year for the computer industry. Industry will remember Dennis Ritchie and Steve Jobs for ever. 2011 will also be remembered for Flash vs HTML 5, thanks to mostly for Mr.Jobs.

IMO, proprietary technologies can't win against open standards. I was with Sun for a decade and we often was told about TCP/IP vs other proprietary network stacks. I see that history is repeating itself this time for Adobe- Flash vs HTML 5.

I read the famous blog by Steve Jobs- "Thoughts on Flash" several times. He is right. In fact when I was reading his blog, it reminded me of AppleTalk rather than Adobe Flash! It was Apple on the receiving end during the network stack evolution and AppleTalk is the proprietary network stack from Apple. AppleTalk & other proprietary network stack failed. TCP/IP won the battle, otherwise there is no Internet today.

Basically Steve Jobs was telling the "inconvenient truth" of proprietary technologies can't win against open standards to Adobe and the world. He is absolutely right. He is just telling his own experience with AppleTalk :-)

The websites like Occupy Flash (http://www.occupyflash.org/) is the just the beginning. Next few years we will see more & more HTML 5 applications across the devices. It's funny that HTML 5 is not just bad for Adobe and even for Apple itself. Click here to see how Financial Times bypassed Apple Store with a HTML 5 app.

I have got great respect for both Adobe and Apple. They have got some great engineers and consistently delivered some innovative products for the last 2 decades. We all remember Apple for the best computing experience. But please don't forget that it was the Flash which gave the best web experience. (Do you use YouTube?)

The end of Flash doesn't mean end of Adobe. If Adobe embraces HTML 5 and Adobe can become the Apple of "Front-end Web". Adobe knows what it means to deliver high performance RIA over the web. It's just the game got changed- instead of Flash it should be HTML 5.

AppleTalk
For reference: Apple Talk is the TCP/IP equivalent of Apple's proprietary network stack. Mac OS X v10.5 was the last Apple OS to support AppleTalk and is now history. I don't have any experience with Apple Talk and can't talk about the technology. The following is the table from Wikipedia describing the implementation of Apple Talk. I am sure Apple might have leveraged some of the investments here to their TCP/IP stack for MacOS but still it's waste of resource & time on a proprietary network stack that failed against TCP/IP.

OSI ModelCorresponding AppleTalk layers
ApplicationApple Filing Protocol (AFP)
PresentationApple Filing Protocol (AFP)
SessionZone Information Protocol (ZIP)
AppleTalk Session Protocol (ASP)
AppleTalk Data Stream Protocol (ADSP)
TransportAppleTalk Transaction Protocol (ATP)
AppleTalk Echo Protocol (AEP)
Name Binding Protocol (NBP)
Routing Table Maintenance Protocol (RTMP)
NetworkDatagram Delivery Protocol (DDP)
Data linkEtherTalk Link Access Protocol (ELAP)
LocalTalk Link Access Protocol (LLAP)
TokenTalk Link Access Protocol (TLAP)
Fiber Distributed Data Interface (FDDI)
PhysicalLocalTalk driver
Ethernet driver
Token Ring driver
FDDI driver

Summary
Adobe Flash is the new Apple Talk. HTML 5 is the new TCP/IP. If Adobe wants to be the leader in the front-end web, it should fully embrace HTML 5 and should build a open standards based web browser with full duplex asynchronous communication for Rich Internet Applications!

Happy Holidays. Stay Safe. Stay Warm.

Oct 30, 2011

Senior Software Engineer - Web GUI Framework

Greetings.

We are a stealth mode Silicon Valley cloud startup in the engineering domain, doing 3D graphics over the web. We are looking for a lead Web GUI engineer and pl find the job description below.

Referral Fee: Company is offering $2K, if the candidate is hired. If interested, pl email me: uday.s@comcast.net

Responsibilities

This is a ground floor opportunity to make a great impact to the product and company to build the modern Web 2.0 style GUI framework that will be used by high profile customers worldwide on everyday basis over the cloud. This is a hands-on position to design and build the modern Web GUI using the latest Web 2.0 style technologies on top of JVM.
·        Design and build a web scale GUI framework on top of our back end platform with strong focus on ease of use for product features
·        Work closely with graphics engineers to deliver high performance 3D graphics using this web framework.
·        Work closely with our back end Java server team to use the REST API for data management.
·        Required to quickly translate product UI requirements into prototypes and followed by production quality web GUI.

Requirements

·       Strong desire to work for a dynamic silicon valley startup
·       At least one publicly demonstrable product experience in building Web GUI. (URL preferred to study the design)
·       Passionate about delivering the best possible user experience to millions of users worldwide over the cloud
·       Very strong Java web software development experience on top of web containers like Apache Tomcat with deep experience in REST API, HTTP internals and web scale needs for the GUI.
·       Distributed session management in the cloud environment and exposure to load balancers like HA Proxy.
·       Previous experience in building web GUI using frameworks like Google Web Toolkit (GWT), Apache Wicket, Play Framework, Spring MVC, Struts, etc. is needed
·       Expert-level knowledge of HTML 5, XML, JavaScript, JSON, CSS, XSL, XSLT, JQuery, node.js and other Web 2.0 technologies.
·       Exposure to Flash (specifically Stage 3D), WebGL and other 3D graphics frameworks are strong pluses.
·       Experience with tools like Google UI Designer or Google Plugin for Eclipse and participation in usability studies are pluses.
·       Strong object oriented design, development and programing.
·       Experience in working with cross-functional teams and ability to establish strong working relationships with remote colleagues
·       Strong verbal and written communication skills
BS/MS in Computer Science or related degrees


Aug 14, 2011

Back to School : Let's Make it Important

Greetings to my readers. I hope you all are having great summer.

I generally focus on my blog about some specific technology and this time is an exception. So, I will make it very short.

It's about "shortage of engineers" in Silicon Valley.

We are living in an interesting time- so many things are going at the macro level. But an interesting fact is that one side there is a high unemployment rate in America and on the other side here in Silicon Valley, there is not enough engineers to work on the cutting edge product developments!

Why?
It's the lack of focus on education. It's the lack of focus on math & science. It's the willingness to even outsource innovation! This is not good. We need to go back to the basics and get the kids to focus on education. Yes, I mean math & science. It's hard. But the benefits are also high.

Take a look at this job opening posted yesterday by a startup in San Mateo. $150K base salary for a senior mobile engineer! Doesn't this number is attractive?
http://sfbay.craigslist.org/pen/eng/2544896729.html

You can see on everyday basis how many engineering jobs are posted here!
http://sfbay.craigslist.org/eng/

If you have an iPhone, you will see the following statement on the back side-
"Designed by Apple in California. Assembled in China".

Imagine if the current trend of lack of focus on education in US continues for a long time, what will happen to the above statement?

If you a see kid going to school next week, ask him/her:
-focus on school/education
-focus on math & science
-encourage him to work hard.

There is absolutely nothing wrong in working hard to excel in math & science. Our kids should know about it.

Have a great rest of the summer.

Feb 6, 2011

Why PHP is succeeding in web 2.0?

IMO, there are 3 key reasons:
  1. Apache web server
  2. Developer community
  3. Performance
It may be ironic to write this blog as a strong advocate of Java for more than a decade but the truth is that PHP is succeeding in the web, especially in the 2nd generation web computing. I accept it. I am coding PHP and have 2 PHP books. Do I like the language semantics? Well, it can be improved little bit more and doesn't match Java quality :-) But PHP got all the goodies to build a rich web app.

In a very broader context, we have 3 technology stacks:
  1. Java
  2. LAMP
  3. .NET
I am leaving out #3 as this is not very relevant in the modern web computing architecture. It's mostly for internal IT applications. I am seeing some traction for Scala(as it runs on JVM) and also the some flavors of Ruby & Python. But not going to discuss them as the focus here is about PHP.

Web 1.0

The birth of Java & commercial Web 1.0 was nearly happened at the same time and brilliant engineers of Sun Microsystems was able to make Java as the defacto standard for web with some key inventions like Servlets, JSP, JDBC, JMS and the container model for building & deploying apps. Also, not to forget the external contributions like struts framework, various Apache products, etc.

So, Java model was a super fit for the 3 tier web 1.0 architecture-
  1. Webserver - for static content
  2. Appserver - for business logic
  3. RDBMS - for data storage
Time moves on. Technology evolves. Architecture model changes. Business requirements changes. Scale became an important factor in the web 2.0 for obvious reasons like broadband, #of users, more devices, etc.

Java also evolves. I admit that it doesn't evolve as quickly in the front end web app domain compared to PHP. Java is heavily used in building the back end infrastructure and even data frameworks like Hadoop are written in Java. Java is still a major force in the web architecture and will continue to be...

Web 2.0
The question here is why PHP succeeding in Web 2.0?
In the web2.0 type architecture, there is no clear separation of web server & app server. The static content is mostly served by CDN. Then data is brought closer to the app tier using memcache for performance. So, the architecture is 2 tier: webserver + data storage.

So in this 2 tier architecture model, PHP makes perfect sense as it runs inside the Apache itself as a module. This completely eliminates the need to have a separate tier for business logic for the web app.
  1. Apache web server is a high performance engine. Also it's a modular architecture- we can add modules based on demand. So this is a natural choice for most.
  2. Then having PHP running inside Apache itself as a module helps to deploy the complete app inside the Apache and avoids yet another layer + network hop. This gives good performance.
  3. Like Java, PHP also has a great developer community. Once you have the mass, you will get lot's of support + rich libraries.
In a nutshell, supper rich PHP web app can be built & deployed on high performance Apache web server itself. Then for any back end processing, Java is a great match with REST API.

Summary
If you are starting to build a scalable web application, think PHP! If you have any scalable concerns, think whether your app is bigger than Facebook or Zynga! I love to hear it.