The problems of the cloud (1:14)
PHP Programming Award nominees of February 2011 (42:55)
Introduction (0:20)Manuel Lemos:
Hello, welcome to the Lately In PHP podcast. This is episode number 11. As always I have as my co-host Ernani Joppert. Hello Ernani, how are you doing?Ernani Joppert:
Hello Manuel, I am glad to be here again, I'm doing great, and there are very interesting topics to talk about on this episode.Manuel Lemos:
Yes, that's right. Actually in spite of the name of the podcast, Lately In PHP, recently there have not been so many PHP specific events happening to talk about, but there are quite a few that affect not only PHP developers but also web developers in general.
The problems of the cloud (1:14)Manuel Lemos:
As you may all have been aware there have been quite a few problems, outages, in so called Cloud. The cloud computing has been sort of questioned due to outages that took a lot of sites, that depend on them, out.
So it became quite worrying of whether the cloud solutions are already mature, if they are really the solutions that we should all be using with our sites, so there is still great discussions going on especially after the outages of the Amazon cloud solutions have been out I think for 36 hours.
I have my thoughts about it, but this time I would like to start asking you, Ernani, what are your views about these happenings related with the cloud?Ernani Joppert:
Oh yes, although as you started mentioning, althoughit doesn't have anything specifically to do about PHP but it involves PHP architectures, as well as cloud computing is pretty much the big boom of 2010 and 2011 I guess.
And in my opinion, my humble opinion, I would say that most of the issues are that wrapping around the architecture are the misunderstandings. The excessive marketing strategies focusing on the adoption of it as it would be the solution for all the problems they are relying on.
The amount of services that rely on those services and the lack of mature infrastructure, not mentioning that Amazon is not an immature one but I guess in my opinion is the most mature cloud computing architecture, and it's proven to be susceptible to these kinds of events.
Although it doesn't break any SLA agreements as I've been reading on the Web, it did impact on lots of famous services like Foursquare and Quora and on other ones that haven't been publicly explained or disclosed.
But in my opinion there is a lot to learn about it, it surely solves a lot of problems but not all of them, it brings out other subjects to the table and to the discussion, and it does also bring us the ability to discuss about the next features that will be built on top of this to make it even more mature and moving forward.
So I guess this has been an event that will most likely become a breakthrough to actually make sense on things that boom up very quickly and out of the blue just proves to be not very, very mature as they thought it would be due to the necessity of marketing on top of those services.
And other situations that I've seen in the past like the usage of custom databases and API's and the problem of understanding how the data is stored and how to manipulate this data and how to retrieve this data in case of a requirement of backing up information and keeping your environment safe.Manuel Lemos:
Right. Well, from what I see the greatest problem is that relying on just one cloud solution provider, in this case Amazon, has proven to be a considerable risk because as we have seen once Amazon stays out of the air for some reason, like what just happened, it leaves sites and services relying only on Amazon out of solutions to overcome the problems of having their business paralyzed during the outages.
In this case it was quite a long outage of 36 hours I think, and many businesses wondered if they could not have had probably a backup cloud solution to rely on when these things happen because once it happens it becomes evident for those that were really wondering that these things are not unlikely.
What happens is that in this case Amazon provides several availability zones which means that in theory once there is a problem with a specific zone, which is probably a specific data center, they have several data centers around the world, and if one has one problem for some reason in theory people could fall back to the services of another zone in another location, and even if it was not as fast it would at least provide a solution that would be temporary until the affected zone is restored.
And in this case it seems to have affected all the zones in the sense that it was not possible once the zone that was mainly affected, I do not recall the exact location but I think it was one of the zones in the United States, to sort of rely on the other zones during the outage and in this case it was not possible from what I understood to replicate the data or whatever is necessary to make those surfaces restart in a different zone.
And I think this raises a lot of questions and concerns. Lots of people have been arguing and actually advocating against the so-called Cloud. And probably now it's more evident that they have good reasons to object to solutions relying on the cloud, because as we've seen bad things can really happen.
But now more specific to PHP, despite the cloud's solutions in general are often agnostic in terms of architecture, in terms of programming language, there are now companies providing more specific PHP services in the so-called platform as a service architecture where they can provide PHP related services on the top of other existing cloud solutions.
And that is the case of at least two startups that I know about, one of them is PHPFog and another is Orchestra. And they are quite recent companies and they are still developing and maturing their products to make them address better PHP specific cloud implementations.
But from what I understood they all rely on Amazon. And if Amazon kind of breaks down just like what happened there is this problem of leaving the customers out of solutions.
And precisely regarding this problem of relying on just a single provider I have read an interesting article by Andi Gutmans of Zend. They have established a partnership with a sort of Cloud middleware solution provider, a company named RightScale, which provides Cloud hosting management solutions that allow companies to adjust the right amount of servers that they need.
And at the same time they also provide multi-cloud solutions. This means at least in theory, I'm saying that in theory because I never tried their services just what I learned from their site, they can in theory provide a cloud solution that relies on different cloud providers.
In this case, this problem that occurred with Amazon, could have had a better way out by falling back to another cloud provider. And from what I learned Zend has established a partnership with this company to provide a multi-cloud solution as basis of a PHP application and implementation based on the cloud using platform as a service architecture.
And now that we know all that happened it seems more evident that these solutions based on the cloud need to be properly taken care, so all the eventual problems that may happen are covered.
And I think this concern of trying to rely on multi-cloud solutions, on one hand it could be wise in order to provide a good way out of the problems of outages on certain solution providers, but at the same time it could raise another problem which is the cost.
If you have to order servers in several different cloud solution providers it starts becoming more expensive. And as I said, while it solves one problem it raises another which is the cost of relying on the cloud.
So at least in my opinion the cloud is conceptually interesting but it still has a long way to go, not only in reliability, but also in terms of cost efficiency because if you have to order servers in multiple different cloud providers just to have one as backup of the other, it starts becoming too expensive.
Ernani, have you tried to implement any cloud based solution? What do you think about these problems of reliability and cost?Ernani Joppert:
Oh yes, I've been trying to achieve personal projects on my spare time, and I've been evaluating all these cloud services, mostly Amazon and Google AppEngine.
And basically what I felt is they are from the standpoint of installing a server and setting up everything and making it available, so you can test it and ensure it works fine, it is quite difficult and it doesn't have much documentation at the time I was digging into this.
And I've opted out to standard solutions for now because of the ideas that I am implementing they are pet projects and hopefully could raise to the requirements of a cloud computing infrastructure. But for now it seems it's not requiring that capability of elastic CPU usage, it's not the case of the pet projects that I am working on aside from this.
On the other hand I've been reading newsletters and clippings from articles that I get on my email and RSS feeds as well, and it brings interesting resources to the table.
Even the Animoto use case, which requires lots of CPU usage to process images with audio and compiling raw impact DVD video so you can download it and basically do a slideshow photo with an audio stream bundle with it and it does pretty accurately and it works really neatly, so for these kinds of use cases the cloud computing is the ideal approach.
Given that we just have Google app engine and Amazon as the most mature ones, IBM has other solutions as well but at another dimension, as well as RackSpace as I've been digging into it as well.
And given that they are low level setup of services and application servers and/or Web services and API's, custom API's, to manipulating data or either restricting technologies that you can adopt to bring your projects to life as Google restricts to Python and Java, I feel it's somewhat in a mature scale for some specific use cases, and in other ones it is too an early adoption.
And for WordPress based blogs or Joomla portals or Zen Cart applications or Magento applications, I don't really feel the need for a cloud architecture to take place because with a decent backup routine, a decent master and slave database architecture, and maybe an intercommunication of services using Gearman with PHP would do the job even cheaper than the minimum requirements of a cloud computing architecture.
So it brings a lot of discussion into table, it's very hard to quantify your requirements, for big businesses it's something to look into, but for the raw web we are used to see happening it does still have a lot of past to seek on.
And I've scribbled here some interesting topics that I've already mentioned in my introduction to this discussion.
There is a lot of marketing being built on top of this and it is very attractive to non-experienced users, and it promises lots of problem solving and somewhat some users have proven they do not have the environment specifically well configured with this issue on Amazon as well, and hence they had other problems brought together with the issue that Amazon suffered, and it has to be more specifically looked into when you're doing this from scratch.
So I would advise users to take caution on this part and avoid getting trapped by marketing words and headlines and promises as well.
The single cloud infrastructure that you are relying on has proven to be an issue because although Amazon has lots of locations that you can have your environment built on top of, and basically granularizing your infrastructure, it failed the transition between one environment and another, so the fail-over situation here didn't happen as it should and it has to be focused as well.
So maybe an exchange between cloud infrastructures would be the solution to go and we would have to see how it moves forward.
And given the services built on top of this to make easy to deploy a platform based architecture such as PHP with the Zend products also could help users to target your projects based off of PHP products more easily as well as having the skilled professionals that are more familiarized with the Amazon infrastructure and Google probably other cloud solutions that would accept this kind of architecture. Hopefully Google could bring this as well but it's a shot in the dark as of now.
And the backup of information is also one of the big issues here because when you have a backup, a very nice backup architecture, then you don't have to worry about anything else, and there are a lot of situations that you have to care for when backing up information, either on your local hard drive on a remote server because of major force events that could happen so it's something to plan on as well.
And also the use of proprietary DB systems versus SQL servers that are mature as well, because some services such as Amazon and Google it's not very trivial to retrieve information and make it synchronizable between environments as well as backing them up. It could be improved and more well documented as well.
And the cost versus specific requisites to adopt because it could be very cheap to hire a VPS server and set up everything on a single box and have everything working perfectly depending on the size of your project or if you need to scale between nodes and clusters and master/slave databases as well as network appliances to switch main servers and make a fault tolerance architecture could be cheaper than this cloud architecture, or not, so it's something to take into the bill.
Other than that these are the major things I've been facing when evaluating those services. And as of now my requirements are not demanding CPU or elastic CPU usage as well as the current situation do not require me to use extreme backup routines and I've been trying to settle those data in specific hard drives and trying to granularize the information between machines either locally here and on friend's computers by using Crash Plan product or rsync as well, it does a good job with some proactive attitude if you want to dig into, they offer very, very powerful solutions at free cost.
So it's just a matter of willing to dig into this and to seek for the best solution with the best price that you can achieve.Manuel Lemos:
Right. Actually for me it all comes down to the type of project that you have in hand. If you have a small project probably the cloud itself is not for you because you will probably run into expenses and complexity that are not justified by the eventual revenue that you may generate from a small site.
For me it seems that the cloud is more adequate when you really have a site that will eventually run at a massive scale, massive requirement of resources. So since most sites that most PHP developers run are not that big, probably it will be too much to think to rely on a cloud solution because it will probably become too expensive for the size of the project.
So I think for now we covered most of the concerns. And many of us are skeptical regarding the cloud. We still need to be convinced that it really justifies and for me the scale of the project is one factor to consider.
And even if you were running to great scale you still need to consider several other factors like the reliability, what happens when there are outages, and also the costs because if you want to have greater reliability like having a multi-cloud solution to support your environment, your site infrastructures, you really need to consider also the cost if it really justifies to have that much reliability because even large scale projects they probably may run into very high costs if you resort to a multi-cloud solution.
In PHPClasses site you can also post your PHP Professional profile also for free, but if you want to apply to the jobs eventually you need to wait a certain period because the site makes the PHP jobs available first to premium subscribers.
So the idea for now is to grow. Eventually in the future it will become a paid service but that will take a while. I expect that it will be free probably for the next two years, we'll see how it grows.
And once it reaches a reasonable level it's possible that it will become like the PHPClasses implementation, on which if a company wants to post an urgent job the company has to pay a fee and the site provides them access to all the available PHP professionals that may apply to that job.
Yes, the first one that brought my attention was the one from Igor Crevar from Serbia, he did a package that represents a jQuery plugin to tag user defined pictures areas
So if you're familiar with social network tagging mechanisms so you can identify one user or another one or make layers on top of pictures, so you can benefit from it using jQuery this brings the potential use case for you as well as the idea of concepting this as a jQuery plugin.Manuel Lemos:
Right. It's like that efffect that appears on I think its Flickr. And then I think it was copied by Facebook and probably other sites that let you mark pictures of people on photos, so they can know who is featuring in each picture.Ernani Joppert:
Oh yeah. And having this as a jQuery plugin as well defines the mature use of the framework, the jQuery framework as well, and for some users willing to dig into making plugins for jQuery could easily use this as an example for adding existing packages to a jQuery plugin, making the framework richer and richer. So it's a nice initiative that I would vote for this one.
And the other one would be from Arturs Sosins from Latvia. The package that he did was Panorama
. And basically what it does, it can add multiple layers to a panoramic view made of images basically transitioning from one view to the other, as I could understand, and also manage animations between image objects so they can move in a panorama effect.
Right. Actually this could be a very interesting object to use in games that have a certain background being animated with some characters in the front, people are looking forward to implementing games that have the parallax effect of having several layers displaying different levels of background pictures, it could be a very interesting object to take a look at.
Well, on my part I would like to highlight also a couple of classes. One of them which will probably say a lot to PHP developers it is named var_dump
. It was written by Rubens Takaguti Ribeiro from Brazil. And he is also a regular contributor of the PHPClasses site.
This is particularly useful when you have complex structures like arrays or objects that have also more arrays and objects inside them. And it give a nice layout to the presentation of the data structures, so this could be very useful especially for PHP developers.
Another interesting object that I found here was recently published, it is basically unit test
framework, actually it's basically an object that was written by Felipe Moura, coincidently also from Brazil.
And then this framework, this object, can execute all the tests and present the results, so you can determine whether your code is running well or not. So you can use this to run, test your code in different browsers and see if there are differences that may warrant that you have problems in your code to fix.
PHP Programming Award nominees of February 2011 (42:55)
So we are going to move on now almost at the end of our podcast to a regular section of the Lately In PHP podcast which is to comment on the latest objects, actually classes, nominated to the PHP Programming Innovation Award of February. And we are going to comment about a few that we thought would be more interesting.
Ernani, which ones would you like to highlight in this month of February? There are not many to be nominated, which ones do you think would be worth be commenting on?Ernani Joppert:
Yes, first of all I would like to recommend the visitors from PHPClasses site and listeners of this podcast to encourage them to submit ideas and solutions that basically they add on into their applications because this could benefit other users and you could also benefit from good karma. Who knows by helping others how much you can get on your life, so promoting your code to help other people would really represent a good thing to the community as well.
And I would suggest the RPC API framework
from AJ. He didn't give his full name here, I don't know why. He's from the United States, he has contributed two packages and this one basically does an RPC framework, so you can basically retrieve XML information and provide them in JSON format as well as from XML to JSON.
And if you want to make RESTful API's to your users this could also benefit from you. And it doesn't, I guess it doesn't rely on any frameworks, so if you are not depending on any frameworks this could also be a potential benefit for you. And if you have your own framework and it wants to add in this as a special plugin, make sure that this is a GPL package and so if you're building commercial applications just take into notice, but it seems to be a very useful solution and this is my vote for this month.Manuel Lemos:
Right. This class not only can return the results of RPC calls, web service calls in XML and JSON format, but also in CSV which is a very simple line oriented format and it can be actually even easier to process especially for PHP applications.
As for my opinion on what would be more worth mentioning this month, unfortunately we did not have many classes nominated this month as in other months, but the one that I noticed that would be interesting to comment on is this one Cisco IP phone framework
by Tyler Winfield from Canada.
Basically what it does is very simple but it provides an interesting effect which is the ability to configure services of Cisco IP phones using XML generated by the class. So you can integrate any sort of services with these phones. The XML that is generated can configure menus and can provide some interaction to these phones, so interesting applications can be developed for the benefit of people using these kinds of phones.
Conclusion (48:02)Manuel Lemos:
Well, I think this is all for now. Next month we certainly will have more PHP, innovative PHP classes to comment on, and I think on my part that is all for now, bye.Ernani Joppert:
Bye, bye everyone and I wish you all the best within this month and keep tuned and for most of the cloud services willing to sponsor our podcast we are willing to find sponsors and we are looking forward to getting in touch with you guys to let us know about this. Bye, bye.Manuel Lemos:
Right, it will be interesting to listen about the progresses of PHP oriented cloud solutions, eventually some of them that we've commented on in this podcast. So that's all, bye.Ernani Joppert: