Monday, February 23, 2009

Inside Zend Server: Windows

image

Inside Zend Server is a series of blog posts which I intend to write on Zend Server (time permitted). As I pointed out in my previous post on Zend Server there are a lot of different constituencies that Zend Server applies to. In this post I will focus on developers and system administrators who are using Windows either for developing or running PHP–based Web applications.

Running high-performance and stable PHP on Windows has always been a serious challenge. So much of a challenge that in 2004 we announced a Zend product called “Zend WinEnabler” which had the sole purpose of delivering stable PHP on Windows. As part of building that product we built a FastCGI plug-in for IIS and Apache, ported our byte-code cache to Windows, and invested considerably into delivering a good experience on Windows. The product was later on streamlined into the Zend Core and Zend Platform offering on Windows. While the stability and performance of these product lines was exponentially better than anything that had existed on Windows before there was still a considerable gap compared to other OSes.

In 2006, Microsoft and Zend announced a technical collaboration to improve the experience of PHP on Windows. As part of this collaboration some of the main accomplishments included Microsoft’s team delivering a FastCGI component for IIS, we worked on performance enhancements to PHP itself, and made additional investments in making sure PHP is a first-class citizen on Windows incl. Microsoft delivering the SQL Server for PHP extension.

Not only have we leveraged all this work in Zend Server but we have put a very big emphasis on making sure it is absolutely the best PHP production environment for Windows.

Also to be clear, the Zend Server Community Edition is not only meant to be useful to developers but also for production. For example, if you want to run a departmental Wiki in production and you don’t care about critical bug and security hot fixes, monitoring, page caching, support, etc. you are still getting production quality bits, native IIS support, a very fast byte-code cache (which we now for the first time include for free) and lots more. Bottom line, you will get performance on Windows better than anything you’ve ever run also with Zend Server Community Edition and not only with Zend Server.

Some of the main Windows-specific benefits you will experience with Zend Server:

- Native MSI installation following Microsoft best practices (constantly reviewed with the MS certification tool). In addition our MSI supports unattended installation for easy mass deployment.

- Native MSI-based hot fixes. This means unlike Zend Core which was using our homegrown update mechanism you will see applied fixes in “Add or Remove Programs” and for regular hot fixes you will be able to use the standard Windows rollback mechanism.

- Automatically enable and configure the Microsoft FastCGI extension on XP, Vista, Server 2003 and Server 2008.

- For Apache users install and enable Zend’s FastCGI extension for best performance and reliability.

- Install SQL Server for PHP extension for out-of-the-box connectivity. Also support MySQL, Oracle, DB2, SQLite and more right out of the gate without needing to download third party drivers.

- Automatically tweak Windows system settings which we found to improve performance in our performance and stress tests. For example, we found that Windows’ MaxUserPort registry entry needed increasing when we ran MySQL benchmarks under stress.

- We test a huge matrix including IIS and Apache on XP, Vista, Server 2003, Server 2008 in their various OS editions (why does MS have to have so many editions for each OS?).

In short, you will not find another solution with the performance, reliability and native integration to Windows as Zend Server. Zend Server CE and Zend Server both enjoy the same foundation which enables this first-class support and also both versions have been subject to a large amount of performance and stress testing. If you were using Zend Core in conjunction with Zend Platform on Windows you will feel approximately an additional 30% performance boost. If you were using something else then you are likely to realize significantly greater performance improvements. And that is before you tune the environment in more detail. Check out the Zend Server reference manual for more detailed performance tips both for Optimizer+ and specifically for IIS.

Side note: Two bonus tips for anyone running on Windows which aren’t directly related to Zend Server are included at the end of this post.

In any case, if you’re on Windows I have no doubt that you will be impressed by Zend Server. Guaranteed!

If you have any questions, comments or benchmarks you’d like to share please email them to me at myfirstname at zend.com.

Andi

Two bonus tips regarding PHP on Windows:

- If you can avoid running your application from a UNC share and host it on your local drive you will get much better performance.

- If you’re on Server 2008 then there’s something called a UAC File Virtualization Filter Driver which we have seen to significantly slow down file system performance and hence also many PHP applications. Best to look this up and if you’re willing to experiment you can turn it off with the following command “C:\>sc config LUAFV start=disabled” (your mileage may vary and it could cause compatibility issues so make sure to read this article first). I believe an easier way to deal with this is to host your application on another partition (e.g. D:) as I believe by default this filter is not enabled for non-C: drives.

Thursday, February 19, 2009

Zend Server is here! (almost)

As I alluded in my New Year’s post we’ve been very busy working on a new product line which today we are unveiling as Zend Server. Zend Server is not a Zend Core or Zend Platform derivative (although it uses a small number of those components, mostly enhanced) rather it’s a new approach on how we want to develop, distribute, and service our production products.

The product has been built from the ground-up to enable easy provisioning on servers, all components can be updated which will enable better servicing of PHP and product components, we have created a community edition which includes real goodies like the management UI and Optimizer+ to make it a great runtime environment for developers and non-critical apps, and much more… Most important though, we see it as a way to develop the product much closer to our users and already in the 9+ month beta we have had with hundreds of reviewers (thanks!) we were releasing incremental builds to our users and using forums to make sure feedback reaches the engineers quickly and publicly.

In the past years it has become clear to me that what our users expect is a simple, easy to deploy, and fully integrated Web stack. Getting a solid, consistent Web stack with the necessary functionality to ensure reliability, security and consistency is not a trivial task for most. With Zend Server, one of our key goals is to deliver a low-cost enjoyable solution which ensures users of all skill levels are able to run industrial-strength production environments.

Zend Server delivers value to various types of users including:

- Making a Linux system administrator’s life easy via native package repositories and up-to-date PHP

- The best possible Windows stack supporting IIS and Apache and using native MSIs for installation and software updates

- The database pro with out-of-the-box support for MySQL, Oracle, SQL Server, and others

- A great way to run Zend Framework applications reliably and fast

- We deliver the best PHP development package for MAC OS X (Community Edition only)

- Or just a really convenient all-in-one PHP package with a nice administration UI, good performance and a growing community

Of course it also features lots of value-add which is key to production but can also be useful in development including monitoring and root-cause, online security and critical fixes for PHP, Optimizer+ (our acceleration technology), a Java Bridge, easy to use page caching and more… Our Website shows the difference between the two editions. We also already have a good roadmap for the rest of the year to add more value over time.

While I intend to elaborate on the various use-cases and applicable audiences in future posts there is one I do want to briefly mention now - the native Linux support. We have really built this product from the ground up reusing only few assets we had previously in order to ensure the easiest, most reliable out of the box experience. One of the major investments we made was in native rpm/deb support. Not only do we come as an rpm but our whole product is actually structured as a repository with dependencies on OS components (i.e. real use of rpms which very few vendors actually do). This means that we sit on the OS like a glove, very natively and easy to administer and when we send out a software update we can do it for any component in the product and you receive the software update as you’d expect on Linux, not through a proprietary update mechanism but through your standard OS update console. This of course opens up a lot of additional opportunities for using Zend Server including easier provisioning with hosters, with VMs, appliances and other use-cases where standardized provisioning is critical.

In future blog posts I will elaborate on more of these areas helping users get the most advantage out of Zend Server depending on the constituency that they belong to.

It was also extremely important to us to make sure we made a free community based version available. Not only to make it as easy as possible for developers to get up and running with PHP but also to help us drive quality in our offering. Some of our biggest challenges in the past have not been serving production environments but rather the user-experience delivered with our installation, licensing and management. One of our key goals for community edition is to deliver real incremental value to our users while in return we get a broad base of users who help us ensure Zend Server is a smooth experience.

Check out Zend Server at Zend.com.

Also you can sign up at our new Zend Forums, kick the tires, and let us know what you think either via the forum or you can email me directly, andi @ zend! You can download either version during this beta program.

Thursday, February 05, 2009

Zend to ship in IBM i

Today we announced that IBM will now ship a preloaded image of Zend's Web stack with any OS upgrade and/or new system purchase.  The goal is to distribute the Zend PHP-based stack more broadly and deliver an out-of-the-box experience for PHP on IBM i (formerly known as AS/400 and i-series).

The relationship with the IBM i team started in 2005. I was deeply involved in forming the partnership and at the time did a lot of the research to better understand the opportunity. This was the first time I really got to know the IBM i community and very quickly I discovered a passionate community who loved their platform but really needed a Web solution badly. There were several solutions at the time which enabled IBM i customers to Web-enable their applications. However, PHP was of biggest interest to the community for many reasons including:

- PHP enables customers to tap into a huge pool of existing PHP talent (approx. 6 million developers) which was a game changer for them as far as talent was concerned.

- PHP has a large eco-system of existing applications which they could leverage.

- PHP is cross-platform and enables organizations to leverage their talent across platforms, databases and applications.

- PHP is easy to adopt by anyone. RPG developers (IBM i's most popular language) can easily learn PHP. After all it's the Visual Basic of the Web.

- PHP delivers modern functionality including support for Web Services, Ajax, Search, graphics, etc...

- and many more reasons...

it is very satisfying that the work IBM and we started in 2005 has really been so well received by their community. There is huge interest in PHP in the IBM i community and adoption has been impressive especially given it was said to be a conservative community. We have definitely proven that wrong.

I have no doubt that bringing PHP to the platform has been a game changer for the IBM i user base. Thanks to the partnership IBM and Zend will continue driving adoption and support for PHP on this platform. I am very much looking forward to continuing our close collaboration with the team at IBM who had the foresight of really pushing this hard over the past few years and, with that, not only making PHP on the IBM i a reality but a first-class citizen.