We are joining Google’s Cloud Transformation Program

October 1st, 2011 by Raymond Velez
Razorfish is super excited to join Google’s Cloud Transformation Program.  Our clients will benefit from the computing power, scalability, and security of Google’s cloud services, as well as Razorfish’s ability to deliver quickly and iteratively. As part of the Cloud Transformation Program, Razorfish will focus on helping our large enterprise customers build custom web applications and analytics tools using Google App Engine and Google Prediction API.

At Razorfish we provide our clients with cloud-based tools to create experiences that build their business. We’re proud to be a part of Google’s Cloud Transformation Program, which highlights Google partners who have expertise and a proven track record of success helping businesses make the most of their IT investments. As a member of the Cloud Transformation Program, we will train our employees on Google’s cloud services, with support from Google.

“We’re very happy to have Razorfish as part of the Cloud Transformation Program,” said Rahul Sood, Google’s Global Head of Enterprise Partnerships. “We’re excited to work with Razorfish to help enterprise customers build customized web applications and predictive analytics solutions—all hosted on Google’s cloud infrastructure. Razorfish has a great record of helping businesses make smart IT investments.”
Bookmark and Share



Highlights from Razorfish’s annual tech summit!

July 21st, 2011 by Raymond Velez

Back in April, Atlanta hosted the fifth annual Razorfish technology summit. We explored how Gesture, Mobile, and the Cloud technologies are enabling a new digital reality for consumers as well as the enterprise. The concept of a cloud-enabled app store is a revolutionary new way to deliver software to the masses across devices and platforms. Enabled by high-speed mobile connections, powerful devices and increasingly low barriers to use, these technologies will change how we interact with brands, each other and the world around us. 
Here are a few videos/presentations:

Introduction: I kicked off the day with an overview of topics discussed and the pace of technological change—and how it’s influencing the way we do business

Keynote: Building an Ecosystem for Web Apps: Rahul Roy-Chowdury, Product Manager, Google (41 mins) Rahul spoke to us about an exciting innovation that Google has brought to market—the Google Chrome Web store—and the evolution of web apps, and how connectivity, offline/online storage and semantics give meaning to them.

Apps Everywhere: Mike Scafidi, Technology Director & Paul Gelb, National Mobile Lead (32 mins) From waking up and heading to the office to catching a plane and a night out, Mike and Paul take us into a future where our refrigerators talk back and facial recognition helps recognize contacts at a conference. And yes, there is an explanation for the mid-morning mobile traffic usage bump.

Case study: The Unilever Greenhouse Platform and Amazon Web Services: Norm Driskell, Director of Service Operations (45 mins) Norm shares a case study on how Razorfish created a digital marketing platform that leveraged the cloud to support, monitor and host one of the world’s largest portfolio of brands.

Marketing in the Age of Big Data: Pradeep Ananthapadmanabhan, Chief Technology Officer, VivaKi Nerve Center (26 mins) Marketers now have to contend with huge amounts of data—from websites, campaigns, mobile activity, social media, location-based, etc. Pradeep shows us one way marketers can make sense of it all.

Open Digital Services: Salim Hemdani, Group VP, Technology & Basel Salloum, Group VP, Technology (41 mins) Salim and Basel introduces the concept of Open Digital ServicesSM, a way for businesses to open up their APIs and accelerate innovation.

Case study: Mercedes-Benz Tweetrace: Ray Velez, Chief Technology Officer (5 mins) In the interest of time, we didn’t get into the technical aspects of creating the world’s first Twitter-fueled race, but here’s a great overview of the case study.

The Interface Revolution: Luke Hamilton, Associate Director of Emerging Experiences & Steve Dawson, Technology Lead, Emerging Experiences (27 mins) Luke and Steve brought their toys along to show us how gestural interfaces are changing the way marketers can interact with their customers.

Concluding Remarks: Ray Velez (2 mins) Special shoutout to @totkat, the summit’s most prolific tweeter and winner of a Motorola Xoom!

Approved presentations and videos can be downloaded from Slideshare if you’re interested. Hope to see even more of you at next year’s summit!

The summit might be over, but let’s keep the conversation going! What are your thoughts on cloud-enabled technologies, views on mobile, or predictions on gestural interfaces? Feel free to leave any thoughts in the comments section.

Bookmark and Share



Using Microsoft Kinect to create new natural experiences

June 10th, 2011 by Raymond Velez

Razorfish’s Emerging Experiences team is using Microsoft Kinect to create new natural experiences. These natural experiences bring computing power to a larger and larger audience. Combined with the adoption of touch on smart phones, plus the large format, physical experiences continue to benefit from digital augmentation. We’ve been really impressed with the Kinect SDK(from Primesense), as EE Technology Director Steve Dawson mentioned it’s been better at recognizing hands than other gesture technologies. Since the hand can take so many forms it’s hard to recognize. Once you recognize the hand, people can naturally take control, kind of like a orchestra conductor. Check out the video here from the Fast Company Article.

Bookmark and Share



From Threads to Coroutines

April 15th, 2011 by Benjamin Mord

Twitter’s recent move to Netty brought with it significant performance improvements, highlighting the importance of network and concurrency architecture. Netty looks like a great framework, making the most of what Java provides today - but at heart, Netty must still be based on multithreading. Mysterious problems are therefore expected. What is really needed is for the world to move past multithreading (any day now, please) which is just a terrible concurrency paradigm.

Coroutines are a better idea. You can do that in python now as of 2.5, via enhanced generators. Prior to PEP 342, the idea was first popularized among python fans via the stackless fork. This approach has proven useful for high-throughput networking, but not many other languages support this paradigm.

ECMAScript *almost* added it in version 4 – and how marvelous that would have been! The need is especially poignant in the thread-starved world of browser programming. The pushback came from concerns about interpreter complexity, but that feature isn’t as hard to add to interpreters and compilers as people think.

Imagine making an AJAX call, where the call stack of your calling function is set aside and the thread released for browser use. Once the server responds, your function resumes – and it is as though you never left! Isn’t this just the obvious way to do it? I remember one scenario recently where I needed to solicit user input in the middle of a recursive backtracking algorithm, except - oh yeah, ActionScript can’t. Of course I could and did restructure around this language deficiency (Turing completeness and all) - but shouldn’t we instead be structuring our code in whatever way maximizes algorithmic clarity?

So why not fix it? As further evidence of feasibility, Mozilla JavaScript found a way - and as predicted, this lets us do I/O in the way we should.

Now all we need to do is get ECMAScript on board. And while we’re at it, why not Java, .Net, and other thread-based langauges? Let’s stop threading, and start generating. All the event-based I/O frameworks we see popping up are fine workarounds in the interim, but let’s address the core language deficiency instead.

Bookmark and Share



What infrastructure changes are required when working with Amazon Web Services?

March 7th, 2011 by Jibi Scaria

Working with cloud services like Amazon Web Services requires significant changes to the way we look at core capabilities taken for granted in traditional infrastructures. Imagine a world where you only get 5 static IPs or where load balancers are software based. Or what happens if I am using traditional software that requires technologies like Microsoft Active Directory. The following section highlights the learnings we have had in those areas.

Infrastructure and AWS:

While the AWS infrastructure allows operation teams a large amount of flexibility in terms of provisioning and managing resources, there are a few limitations of the infrastructure that teams have to be aware of and design around.

Addressing EC2 instances consistently

Almost every addressable infrastructure element (e.g. EC2 instances, elastic load balancers, RDS database end points, etc) has a dynamic IP. An EC2 instance has an internal IP / DNS and an external IP / DNS. This means that the internal name resolves to the internal IP and the external name resolves to an external IP. AWS recommends that the internal IP be used when addressing instances internally as this will ensure that traffic is routed to the instances internally rather than going out to the external network and coming back in. Both the internal and external IPs are dynamically allocated - this is done to facilitate failover and also because static IPs (especially external ones) are a very limited and scarce resource.

This also means that if the instance is terminated and re-instantiated there is no guarantee that the element will retain the same IP as before. This is especially important when using EC2 instances. Any kind of restart - stopping and restarting the instance (restarting it immediately does not cause this), instances that are brought up on another EC2 node if there is a failure on the original node, etc will cause the IP address of the instance to change. This can be a challenge especially if some other component has to address the instance or a component running on the instance e.g. the instance could be hosting an internally visible search engine or a database engine that is addressed by other components within the infrastructure by a search URL or a JDBC url that has the IP address / hostname of the host server.

NOTE : We need to verify that for a vanilla instancethe  external name resolves to external IP internally? Anyone?

One way to overcome this is to have a static IP associated to an EC2 instance. Once a server is assigned a static IP, it has been seen that the external DNS name when resolved internally, resolves to the internal IP of the server as opposed to the external IP of the server.

Assigning a static IP doesn’t mean that the EC2 instance will have a static address for the lifetime of the server, just that it will have a static address as long as the instance is up. If the instance is rebooted (either by the user or automatically on a failure), the intense will come back up with a dynamically allocated internal and external name and IP. Once the instance is back up, the static IP can be associated back to the instance. This could mean that instance startups have to be monitored and startup events scripted to achieve this automatically.

Another thing to note is that while the instance is being associated with a static IP, it will be unavailable for a small period of time while the association takes place. In our tests we have seen this time to be anywhere between 5 and 20 minutes.

An important point to note is that each AWS account is limited to only 5 static IPs that they can use. This is because static IPs are a rare commodity. If a user requires more than 5 IPs, they have to submit a case to AWS support who will then review the case for approval.

Active Directory(AD) / Domain Name Servers (DNS)

As previously noted, addressing instances / services on an EC2 instance is a challenge given the dynamic addresses of the servers. This is especially a problem when setting up something like an Active Directory within EC2. One way to mitigate the addressing of servers within your environment is to use a DNS server with a static IP address associated with it. Once a DNS server is setup within your environment, it should be easy enough for the administrator to allocate DNS names to these servers. Each EC2 instance is then configured to use the internal DNS server as the primary DNS server. In cases where these individual servers have their dynamic IP change on outages or restarts, the administrator can update the DNS records appropriately, allowing the servers / components to continue to access the services on these EC2 instances without having to be aware of the new dynamic IP.

Since the DNS server becomes key central sub-system within the architecture, it would be a good practice to have a secondary DNS server (possibly setup within another availability zone), also setup with a static IP, as a backup in case the primary DNS server goes down.

Elastic Load Balancing

Elastic Load balancers are a great resource when you want to have external traffic load-balanced to a group of servers. For maximum availability, performance and redundancy, these servers are distributed within more than one availability zone. This allows you to add or remove servers that are servicing requests during peak load and non-peak traffic hours. ELBs can also be configured with auto-scaling triggers such that server instances are added to or taken off automatically from the available pool of servers servicing user requests, when certain thresholds (e.g. CPU utilization, memory high-water marks etc.) are reached. Beneath the hoods, these ELBs are managed such that any outages in the underlying instances that service the requests at the ELB layer are handled automatically with minimal down time, to ensure that the ELB layer is available as much as possible.

An ELB is allocated an external IP and a dynamic DNS name. Unlike EC2 instances, it cannot be allocated a static IP. It should always be addressed by its dynamic DNS name as the IP can change on failover.

The one disadvantage of ELBs are that they are always externally facing i.e. one cannot setup an ELB such that it is visibly only internally. Thus they are not suitable for cases where you have a set of EC2 instances that have to send requests to a pool of internal servers. In these cases, users are forced to setup software load-balancers (like HAProxy or XXX) and manage them on their own. Users are also responsible for ensuring redundancy and avoiding single points of failure in such cases.

ELBs provide 2 layers of load handling - one at the inbound gateway layer and the other at the target server pool by the EC2 instances that the user adds to the ELB configuration. If there is a lot of inbound traffic at the ELB endpoint, AWS can handle this higher load by bringing up new ELB instances. AWS then updates/adds DNS records for these new instances and uses DNS round-robin to distribute load among these ELB instances. As long as the end-users continue to address the ELB by the dynamic DNS name, the system will leverage the additional ELB capacity and result in better performance. AWS can also increase the capacity of the internal servers that form the ELB servers e.g. use medium or large instances instead of small instances to server as ELB servers.

Root DNS:

A typical web application setup on EC2 leverages ELBs that load-balance external traffic to a pool of internal EC2 instances. As we have seen above, users should always address the ELB via its dynamic DNS name rather than its external IP address to be able to leverage the scaling that AWS may provide internally in times of load or outages. Not being able to use an IP address can become a problem, especially when you want to address an apex record for a DNS zone to an ELB.

e.g. Assume that you are using the “example.com” zone for your application. In a typical scenario, you will CNAME over the DNS records for www.example.com to DNS name of the ELB that you setup for your account.

e.g. zone : example.com

www 3600 IN CNAME my-load-balancer-888888.us-east-1.elb.amazonaws.com

But a typical use case is to have to ability to setup traffic from the domain i.e. “example.com” to be also serviced by the web-application (i.e. by www.exmaple.com), you need to have the apex record (@ record) point to the ELB. But since you don’t want to use the dynamic IP of the ELB, and since you cannot use a CNAME for a DNS apex record, you may be forced to setup a dummy server (again with appropriate redundancy for failover) that can handle requests for “example.com” and have that dummy server redirect requests made to “example.com” to “www.example.com” , thus allowing the requests to be served eventually by the ELB fronted web-application.

Bookmark and Share



The NoSQL Movement

February 23rd, 2011 by Mandhir Gidda

The NOSQL movement that has recently taken on a momentum of its own, NoSQL is not an out pouring of frustration with databases, but is taken to stand for ‘Not Only’ SQL, and is seen as response to technical architectures where traditional database/data query technologies are not the ‘de facto’ approach to data storage and management.

Personally I believe that this movement began with Eric Brewers CAP theorem in 2000. Brewer was talking about trade-off decisions that need to be made in highly scalable systems. He postulated that there were three core system requirements that any distributed system had to exhibit those of Consistency, Availability, and Partition tolerance hence the ‘CAP’ of CAP theorem. However he went on to make the distinction and state that any scalable system could only be guaranteed to have any two of these attributes.

The result of this was that Werner Vogels CTO of Amazon in 2008 coined the term ‘Eventual Consistency’, i.e that Availability and Partition tolerance were the running attributes that were most important and that system inconsistencies could be resolved in time i.e that continuous consistency is not usually required. As continuous consistency is the raison d’etre of the database, this has meant that the classic role of the RDBMS has changed or at least has undergone a rethink in the context of extremely scalable distributed processing. The fact many of the Internet scale businesses (Google, Amazon, Facebook etc) have been instrumental in developing ‘open source’ NoSQL products for their own line of business applications has added to the impetus behind this movement. The very nature and price point of cloud computing and storage for our enterprises, has meant that we are able to store, process, and analyze much more of our own business data, more often than not we are able to make use of the ‘NoSQL’ tools that have been developed by these leading internet business.

Products like Hadoop/Hive originally developed by Google for doing massive data mining using the Map/Reduce pattern have evolved into Cloud based services like ‘Elastic Map Reduce’ from Amazon, and has been taken on as a top-level project by the Apache foundation, and thus available to use at the public or private cloud level by any company with the requirement to process petabytes of data.

The NoSQL movement has also had increasing adoption and impetus from those application domains where the problems to be solved do not necessarily fit snugly into the classic ‘Relational’ model. A wide range of NoSQL products has sprung up which use different logical models to represent ‘semi-structured’ data these include Map/Key-Value oriented (Voldemort, Dynomite), Column Familiy oriented (BigTable, HBase, Hypertable), Document oriented (Couch DB, MongoDB ), and Graph oriented (Neo4j, Infogrid)

At the same time traditional schema based database structures are more often considered too inflexible to accommodate changing business models. Our own experience of working with O2 on a telecoms product catalogue has lead us to consider a NoSQL solution as the natural path in the ecommerce platform evolution. The O2 business model and the types of products that it sells now include not only handsets, tariffs, and accessories but broadband, games, ringtones, consoles, financial services, content, and could progress onto many other as yet not envisioned physical and logical product offerings. We have been looking at NoSQL ‘Graph’ databases as a way of modeling products, their attributes, relationships, and eligibilities to customer segments in an attempt to develop a product catalogue that can continue to offer flexibility as the business evolves.

The case outlined is not uncommon, whereby data, and the approach to dealing with it necessitates a cloud technology landscape, one that is a departure from the intrinsic constraints of fixed datacenters and the RDBMS. Another good example of this is Razorfish’s own EDGE platform. Historically this application and its data would have made exclusive use of Enterprise level database infrastructure, hosted in a proprietary datacenter in a DR configuration. The volume of data however has been growing exponentially, as has the compute power required, necessitating an entirely new approach. This approach has been to use Amazon EMR consisting of the Apache Hadoop/Hive/HBase product sets, to both host and process the increasing data volumes. This approach makes the most use of the utility of Amazon’s cloud as well as the frameworks that others have positioned on that cloud i.e NoSQL databases.

It can be seen that patterns for managing data in modern web centric enterprises, through the use of the new application class of NoSQL on the cloud, are a better choice for anticipating change and trends (compared to RDBMS solutions) given their support for unstructured data, horizontal scalability through partitioning, and high availability support.

Bookmark and Share



Near Field Communications - Primer

February 9th, 2011 by Raymond Velez

NFC with poster and phone

This article from Ars-Technica is a great high-level primer on Near Field Communications (NFC). NFC is a very exciting technology that has actually been around in one form or another for years. Many folks consider it an evolution of the contactless payment systems already out there from MasterCard and Visa. In Asia it’s been around for a while with FeliCA. There are well known standards, like ISO/IEC 14443, supporting the wireless communication, especially around payments. The standards leverages two types of data communication, type a - Miller encoding and type b Manchester encoding.

Keep in mind, likening it to the contactless payment can suggest that’s the only usage. However, there’s lots more potential applications. Think of it this way, hold your phone around 4CM(up to 20cm, but most will be 4cm) from whatever it is you are interested and get more information. Looking at a car, hold it near the side view mirror and get cool videos, looking at a tent (yeah I like camping), hold it near a tent pole and get stats on the tent, etc. I think you get the point. However, these are only one way communication examples.

While NFC stands on the shoulders of Radio Frequency Identification (RFID), it is different in a couple of ways. One difference is two-way peer to peer communication. So, the NFC device(i.e. phone, camera, laptop, etc.) can communicate back and forth with the tag. Traditional RFID is one way. Lots of new applications are enabled through two way communication. Envision applications like an NFC-equipped digital camera that could transfer an image to an NFC-equipped TV set for viewing. Or an NFC-equipped computer could transfer mobile apps to an NFC-equipped mobile handset. Or shoping at a Pharmacy, hold up the phone to a tag and get a coupon, and on and on. It’s always nice to see technologies like RFID start to catch up with the long-term vision.

Given the communication requires close proximity, that inherently helps security. In addition to the proximity requirement, encryption is available as well. That isn’t built into any of the standards, but is feasible and likely important in personal and financial applications.

Bookmark and Share



Razorfish Agile Offering

January 30th, 2011 by Raymond Velez

The offering is targeted at helping our clients adopt more Agile best practice to achieve better results faster and more efficiently. Our Agile team brings tremendous passion to this offering and is looking forward to taking it to the next level. The offering itself consists of a training program and methodology that we can deploy internally and with clients. In addition to core training on cross-discipline agile, beyond just software development, we also offer organization support on how to align with a lean organization that can support Agile Product Development. Here’s a link to the press release for more on our offering.

Here is a recent blog post from Forrester which was an early affirmation of our thinking

Bookmark and Share



Fully automating releases to production and The Toss Test

January 26th, 2011 by Raymond Velez

I just read this article on web ops 2.0, basically the movement to automate pushing builds to production. There’s been a lot on the web recently on the topic, this slideshare presentation from flickr is great. A proof point that we can release a lot more often to production, especially with agile/iterative teams that include QA practices as part of development as opposed to a separate effort. The analogy between spock as development and scotty as operations is pretty spot on. It highlights another important point, which is while the technology is there, we also need to bridge the different personalities.
opsdev
The ‘toss’ test in the article was funny. So, to determine the success of your environment. Basically grab any machine, rip it out of the rack and throw it out of window, preferrably a high window. Can you automatically re-provision your systems and return to a previous state? Or question two, your sr. engineer runs away to Alaska(I didn’t want to toss anyone out a window:)), can your operations proceed as normal?
So, not only does fully automated provisioning enable faster releases to production, but it also hardens your infrastructure and protects against failure.
Leveraging cloud APIs and technologies like Puppet, Chef, Kickstart, Rightscale, etc. is what makes this all possible. Of course, these capabilities come compliments of cloud computing and the ability to automate through cloud api’s and inexpensive, on-demand compute capabilities.

Bookmark and Share



Chrome web store

December 14th, 2010 by Martin Jacobs

Last week, Google released the Chrome Web Store. Not all reactions were overwhelmingly positive, but having played with it for the last week, I like it. Even though in some cases the ‘apps’ are not much more than mere links to various web applications, in others, the applications are quite unique and different from the standard web sites. Having one single place to browse for new apps is a fun activity. The fact that the applications show up in my browser when I launch a new instance is very convenient.

It is going to be interesting to see how this further evolves, but as this engadget article describes, it is sure to result in further UI innovations.

Bookmark and Share