Move from MySQL to DB2 via the Cloud

24 November 2010 » Cloud, DB2, developerWorks, Linux, PHP, Zend

IBM developerWorks has just published the first article in a series that Mark Nusekabel, Yan Li Mu and I wrote about our experience migrating a large PHP and MySQL application to DB2.

In the four part series we look at preparation, switching databases, porting code, and finally deploying the application. This first installment covers the steps to plan and resources to consult when starting a migration project.

Along with the MySQL to DB2 migration Redbook, a key technology supplementing each step in the process is the IBM Smart Business Development and Test Cloud.

If you already have access to the Development and Test pilot, the PHP developer’s guide (PDF) can give you some tips for configuring Zend Server along with DB2 using virtual machines in that cloud.

The article series and the developer’s guide may also be useful to those who have a contract for the GA version of Development and Test.

Another option to evaluate DB2 for a migration is to use the Amazon EC2 AMIs pre-configured with IBM software individually.

Or, if you’re interested in managing several instances or more complex configurations, RightScale and IBM have collaborated (PDF) to bridge the Amazon and IBM clouds.

So, if you’re considering a new relational backend for your application, the developerWorks migration series, the PHP developer’s guide for the IBM cloud, and the images within the Amazon and IBM clouds will give you a new set of tools to make evaluating the move and executing the switchover much easier.

PHP 5.3 at New York PHP this Tuesday

25 July 2010 » New York PHP, PHP

This month Hans Zaunere and Nate Abele will give us a look at the new features in PHP 5.3 and how they’re used in production today.

Specifically, these NYPHP regulars will cover three new major language features: namespaces, late static binding, and closures.

RSVP now for the meeting at IBM in midtown Manhattan on Tuesday July 27th.

Facebook and HipHop at New York PHP

27 April 2010 » New York PHP, PHP, Web development

Tonight we’re hosting Scott MacVicar from Facebook as he presents their highly optimized version of PHP called HipHop.

HipHop translates and compiles regular PHP source into a C++ binary that reduces CPU and memory usage and thus helps Facebook serve twice the content with a two-thirds the resources of a stock Apache and PHP system.

Look for the slides in our New York PHP user group archives shortly.

Follow development of the open source HipHop project at github and keep up with Scott via his blog.

Learning to write Java apps for the BlackBerry

22 April 2010 » BlackBerry, Java, Potpourri

Early in 2009 I decided to start writing Java applications for BlackBerry devices.

I’ll tell you why I chose this particular smartphone platform and how three books that I later received as review copies from Apress can help you get started too.

I’ll also share some thoughts on a gap I see in the BlackBerry developer’s bookshelf.

BlackBerry leads US smartphone market share
With the Apple iPhone garnering all the the mobile application exposure, it’s easy to see why RIM’s BlackBerry devices get less developer attention these days.

However, BlackBerry devices still hold a larger share of the smartphone market than either the iPhone or Android devices.

According to comScore, RIM comprises about 40% of devices sold, with Apple at 25% and Google at around 10%. The iPod and iPad aren’t included in this category, of course.

Other reasons I chose to develop for the BlackBerry platform
Besides the sizable marketshare, there are three major reasons that I’ve been learning to build BlackBerry apps over the past year or so.

  • My wife and I have owned several personal BlackBerry devices over the years and continue to use them daily.
  • Java development is a major part of my day job and it’s nice to reuse those skills on a new platform.
  • I work for a company that uses the BlackBerry Enterprise Server to manage its mobile workforce and therefore I already have a sizable audience of users to target for new projects beyond standard Web applications.

Where to start?
When I started learning about the BlackBerry platform there weren’t that many recent books on the market, which surprised me.

Instead, I needed to learn what I could through trial and error and the help of the large, but somewhat disjointed, collection of official documentation from RIM on the BlackBerry Developer Zone.

While there is a lot of material there, it’s hard to understand what’s most relevant and up-to-date, and what sort of roadmap the beginner should follow to learn the platform given those resources.

Getting started gets much easier
Fortunately, the BlackBerry book landscape has improved in the past few months, but the number of new releases still pales in comparison with the glut of iPhone development titles on the market.

I’ve had a chance to work through a few of these new books, two of which Apress provided me for free as review copies, and another that I have access to via Books24x7 thanks to my place of employment.

I suppose it’s only slightly ironic that as I read the latter book online, I wished I had an iPad to curl up with rather than a run-of-the-mill laptop or smartphone. :)

Apress book overview
By all indications, Apress has emerged as the leading publisher of BlackBerry books in late 2009 going into 2010. In particular, the first title below is one that would have saved me a lot of time when I got started early in 2009.

In any case, I can recommend any of these books, but obviously they all have their own target audience and don’t necessarily need to be read in sequence.

Also, keep in mind that these books focus on the development of native Java applications rather than tailoring Web sites to the BlackBerry browser.

  • Beginning BlackBerry Development by Anthony Rizk.
    This book provides an excellent introduction to the key topics that most interest a Java developer new to the platform.

    It covers the basics of setting up an IDE, putting together a user interface, using local storage, making network connections, using GPS, and distributing your application. All the steps are approached in an easy to follow tutorial format.

    The fact that Anthony Rizk was a founder of Rove Mobile – which produces the admin tools I depend on on my BlackBerry – lends this book extra credibility.

  • Advanced BlackBerry Development by Chris King.
    This book covers some of the same ground as the title above but takes a deep dive into audio and video development, text and email messaging, encryption and access control, and integration with the BlackBerry operating system and its built in applications such as the Address Book, Calendar, and Browser.

    It also provides valuable lessons on packaging your application for many different BlackBerry models and carriers and automating the build, versioning and deployment processes.

  • Learn BlackBerry Games Development by Carol Hamer and Andrew Davison.
    While this book’s subject matter has less in common with the type of business applications I write, it was an interesting read.

    Some of the compelling chapters include information on using Antenna for builds, using OpenGL ES and JSR 239 for 3D graphics, and how to license, release and commercialize your application.

    There’s even a thoroughly geeky chapter on using a BlackBerry connected to a PC via BlueTooth to drive a toy car attached to the computer by USB.

What’s also nice about these books – and what sets them apart from the official RIM documentation – is that they are pretty straightforward about the limitations of the platform and can be quite frank with their assessments of certain capabilities.

What I’d like to see in upcoming books
I set a goal for myself to deepen my BlackBerry skills this year. One of the best ways that I’ve found to thoroughly understand a platform – even one that you’ve been using for years – is to attempt certification or at least know the study materials inside-and-out.

RIM has recently introduced a certification program in order to achieve the BlackBerry Certified Application Developer credential via Java or Web development tracks.

Given how new the exams are, there aren’t yet any guides on the market to help the candidate pass both exams needed for certification.

Addison Wesley’s BlackBerry Development Fundamentals by John M. Wargo claims to be a good guide for the prerequisite exam (BCP-810), but does not cover the second exam on either Java (BCP-811) or Web development (BCX-812, understandably, which is still in beta).

Given that RIM’s study guides are so sparse, I see a great opportunity for any publisher to hit the market with a certification guide on these two exams in 2010.

Final thoughts
If you’re looking to get into Java development for BlackBerry smartphones, I recommend you at least have a look at Beginning BlackBerry Development.

Of course, supplement your learning by staying on top of news from the BlackBerry Developer’s Blog and of course the BlackBerry Developer Zone.

If you find the platform interesting, have a look at either Advanced BlackBerry Development or Learn BlackBerry Games Development.

Finally, I recommend you keep an eye out for news from the WES conference next week. I hope RIM gives developers even more compelling reasons to look at the BlackBerry platform.

Develop and test your apps on the IBM Cloud

I moved to a new position within IBM at the beginning of the year, joining the Enterprise Initiatives organization responsible for delivering IBM Smart Business Development and Test on the IBM Cloud.

Before I joined this team, Development and Test launched as a free public beta in 2009. Throughout 2010 we’ve incrementally improved the pilot and in the near future a generally available pay-per-use version will go live.

I’ll describe some of the features that Development and Test beta has now, highlight some usage scenarios that it can enable or improve, and along the way tell you where to learn more. As always, the standard disclaimer applies.

In a future post, I may put together step-by-step instructions on using the virtual machines on the IBM Cloud to:

  • Build PHP with an instance of DB2 as a way to illustrate how system administrators can evaluate the platform or practice configuration.
  • Verify that a sample Java EE application written for Tomcat works unmodified on WebSphere.

IBM Smart Business Development and Test on the IBM Cloud
Like many Cloud technologies, Development and Test aims to reduce the time and money spent by customers to procure, configure, and run IT infrastructure, platforms and software.

But the target of this particular system is to:

  • Give developers and testers hands-on access to IBM software in minutes rather than days or weeks.
  • Provide application developers with an environment to write and run their applications.
  • Allow usage to scale up or down depending on the phase of the project.

As a result, users will have more confidence in the quality of their work and are able to make better informed choices about its hosting environment when they deploy.

Feature overview
The Development and Test beta is a Web application that provides a dashboard for managing Cloud resources, a catalog of images to start with, and a set of APIs (Web service and command line) for accessing assets programmatically.

With it, you can:

  • Provision virtual servers
    An application developer can quickly start up an instance of a server OS, such as Red Hat Enterprise Linux, that is pre-configured with WebSphere or DB2, for example.

    With an operating system and middleware in place, the developer can try out the software setup or verify that their application works on that particular configuration.

  • Set up virtual development environments
    A developer can request a fully configured IDE instance, such as the Eclipse-based Rational Software Architect, and connect to it using a virtual desktop like FreeNX.

    Alternatively, the user can integrate with a hosted instance of Rational source control, automated testing, and project management software from the physical workstation they already use.

  • Save and extend configurations
    Once the team is satisfied with the product or system at a point in time, they can save a snapshot image of the configured instance.

    That image can then be used as a template from which to create new instances that can be shared with others. Those images can also be tagged as a test release or captured as a known good savepoint to build upon.

    Beyond the catalog of pre-configured IBM software stacks in the system now, IBM is working with partners to add third-party pre-configured packages on the Cloud.

In all cases, the user acquires the resources s/he needs right away without the need to find and run hardware or download, install and configure software.

This shortens project start time, reduces time spent on configuration trial and error, allows for more development iterations in the schedule given the same project length.

If you want to get a hands on introduction now, have a look at the developerWorks overview article or user guide (PDF).

Otherwise, if you want to hear my take how I think this particular Cloud platform can make life a whole lot easier for anyone involved in software development, read on.

New possibilities
Since this approach reduces much of the time and money to get hardware and set up software, several new possibilities and potential use cases come to mind.

Imagine the following scenarios that can be made possible or made much easier:

  • You are an innovator who needs a place to demo an early prototype to potential investors in order to justify further development.
  • You are a developer who has created an application on your laptop with a Personal or Express edition of IBM software and you want to see if it will run on a WebSphere and DB2 server to see if there are unexpected differences.
  • You are an independent software vendor who has verified your software on Tomcat (or PHP) and MySQL and wants to widen your potential customer base to include those customers who have an IBM infrastructure.
  • You are a committer to an open source project, and you want to replicate an issue reported by a user and and debug it using the configuration they have on their system.
  • You are a student who wants to build skills or experience hands on or do comparative research between operating systems and software vendors.
  • You are a standards body member, such as for ODF or Java EE, and want to see how a vendor implementation adheres to the specifications.
  • You are an author, you can make sure your readers have a copy of your sample code.
  • You are an instructor, you can make sure your students have an identical setup to reduce class prerequisite setup time.
  • You are a system administrator, and you want to test out an upgrade on an identical server before committing changes that are time-consuming or difficult to reverse on your own system.

Sound interesting?
The Development and Test on the IBM Cloud beta is available to use for free right now. In the coming weeks, a paid, stable and supported version will be available that charges on a usage basis.

If you want to take it for a spin, have a look at the developerWorks overview article or user guide (PDF) in order to get started with the beta. The support page offers forums, FAQs and getting started videos.

You may also want to follow the new developerWorks section and join the user community to learn more about this platform in particular and Cloud computing in general.

If you’re interested in the upcoming paid version check out the data sheet (PDF) on the IBM Middleware Services page. This video also makes a compelling introduction.

Enjoy, and don’t forget to check back here in the coming weeks to see those step-by-step PHP/DB2 and Tomcat/WebSphere tutorials.

Upcoming WebSphere and PHP book reviews

04 December 2009 » Java, PHP, Web architecture, WebSphere, Writing, Zend

With several vacation days to cash in through the end of 2009, I hope to catch up on some reading and learn more about the latest developments in the two areas where I do most of my work as a Web application developer – Java EE Web applications built on IBM WebSphere and PHP Web applications using various Zend products.

About a month ago I performed a technical pre-publication review of the second edition of the MySQL to DB2 Conversion Guide that was just released this week, but the following books will be covered from an end user point of view, after general availability.

IBM WebSphere eXtreme Scale 6
First up will be IBM WebSphere eXtreme Scale 6 by Anthony Chaves.

Packt Publishing – who have sent me a free review copy – have made “Chapter 7: The DataGrid API” (PDF) available as a free download.

WebSphere eXtreme Scale is an in-memory data grid used to cache objects and improve both performance and scalability in Java EE applications. It’s analogous to memcached.

I’ve read the first chapter so far and am looking forward to diving into the rest shortly, particularly as I continue to tune a high-volume WebSphere application set to launch an update later this month.

Pro IBM WebSphere Application Server 7 Internals
My next review will be a related middleware title, Pro IBM WebSphere Application Server 7 Internals by Colin Renouf. Apress also sent me a review copy of this book, along with the next title.

I’ve read a few chapters so far, and am quite intrigued by how the author has exploited the modular Eclipse (didn’t know that!) underpinnings of WebSphere 7 to produce some interesting system administration plug-ins.

Of most interest to me about this book is that the author is neither an IBMer with access to WebSphere’s source code, nor writing to sell the reader on IBM middleware, but rather a seasoned pro with lots of practical experience getting the most out of WebSphere.

Zend Enterprise PHP Patterns
Finally, I’ll have a look at Zend Enterprise PHP Patterns by John Coggeshall with Morgan Tocker, also from Apress.

Rather than a catalog of architectural, object-oriented software patterns, this book describes several techniques for developing effective and efficient PHP applications using best practices based on Coggeshall’s years at Zend working on several large scale projects for enterprise customers.

I’ve read two of the chapters in this book that are of prime interest to me, “Web Application Performance and Analysis” and “Data-Caching Strategies in PHP.”

The former looks at diagnosing whether an application is CPU, memory, or I/O bound. This server level approach moves beyond profiling PHP code and looking at the hardware itself. Even for applications moving to the Cloud, this should remain extremely relevant.

The latter chapter has much in common with the WebSphere eXtreme Scale product above, so it will be interesting to learn more about the state-of-the-art in both PHP and Java EE Web application performance techniques.

So far so good
Stay tuned for the more complete reviews in the coming month or two. Right now it seems that all three titles are solid additions to any Web application developer’s library, but I’ll hold out my final verdict until I have a chance to evaluate each more thoroughly.

Updated draft MySQL to DB2 migration guide

05 November 2009 » DB2, IBM, MySQL, PHP, Writing

Update: The final Redbook has now been published.

Whei-Jen Chen and Angela Carlson have prepared an updated and more comprehensive draft of the venerable MySQL to DB2 Conversion Guide to cover migrations from MySQL 5.1 to DB2 9.7.

The original version of this IBM Redbook published five years ago looked at migrating database applications from MySQL 4.0 to DB2 8.1.

Chapter 6 of Developing PHP Applications for IBM Data Servers extended the first edition three years ago by showing the changes required to migrate from MySQL 5.0 using the PHP mysql_* and improved mysqli_* extensions to DB2 8.2 using the Unified ODBC (odbc_*), the new IBM DB2 driver (db2_*) and PDO_IBM.

This new draft edition is still undergoing review – I’ve already sent along some comments and contributions from my field notes – and the authors are still accepting suggestions and reviews before they produce the finalized version.

So have a look a the draft, and get your comments to the authors. Otherwise, if you think it’s perfect as is, you can just rate it 5 stars all around. :)

Technology of the day: Zend Server

03 September 2009 » DB2, Linux, MySQL, New York PHP, PHP, Zend

A few months back, Ed Kietlinski introduced us to the new Zend Server at a New York PHP meeting. I’ve since installed it on two of my department’s servers and put together some notes on my experience.

Update: See the comments section for some configuration suggestions from Zend that differ from the steps I followed. Jess also clarifies the difference in caching between the standard and Community Editions.

What is Zend Server?
Zend Server is a packaged version of PHP targeted at businesses that require a supported and tested stack that’s easy to install and maintain.

It also integrates the other Zend products, such as the Zend Framework, Zend Studio for debugging, Zend Caches, Zend Java Bridge, and Zend Guard/Optimizer among others.

Zend offers several variants and licensing models. There’s a Community Edition that’s free but doesn’t include the more advanced features such as caching and monitoring, there are several tiers of production support, and there are half-price development licenses.

In all cases, migration from one version to another is simply a matter of updating your license information in Zend Server’s console.

Why it interests me
Zend Server hits a sweet spot for my team, where we run only one each of development and production LAMP servers.

We don’t cluster nor do we require a job queue for our PHP applications, so the Zend Platform Enterprise Solution doesn’t fit our needs (See this comparison table).

Of course, we use plenty of WebSphere and Java for our sponsor facing applications hosted in advanced data centers that have different functional and non-functional requirements.

However, our internal department tools are supported by hybrid front-end/server-side developers that can learn and get up and productive on PHP quickly, rather than needing to know or learn Java in the same ramp up period.

In the cases where we require queuing or clustering, we look to WebSphere Application Server, rather than Zend Platform Enterprise Edition, as we do to run our Restlet/Spring Integration pseudo-ESB that integrates many of our other internal tools.

The primary attraction of Zend Server for these department servers is that it can be used as an RPM-based system that bundles the latest stable version of PHP with all the extensions that we need, including the DB2 and MySQL drivers, curl, libxml and mbstring.

Our full-time system administrator has long had to maintain custom compiled versions of PHP and Apache, but we want to move to an automated, package-managed way of doing things as he increases the volume of non-sysadmin work he has taken on.

The RPMs from CentOS repositories are traditionally a few PHP versions behind and aren’t patched frequently enough to fully rely on the operating system’s default package management system.

As I’m writing this, the most recent RPM version of PHP is 5.1.6 where the most recent version of PHP is 5.2.10 (shipped with Zend Server 4.0.4) and 5.3 (shipped with Zend Server 4.0.5).

Beyond easing maintenance for us from an installation and update perspective, Zend Server also offers a performance boost (an optimizer and cacher), monitoring features (logs, traces and event notifications), and simplified configuration (switching on and off extensions, setting directive properties) managed through its GUI Web console.

Installation
I installed Zend Server on two servers – an x86 and an x86_64 – running CentOS 5.3 using the RPM method. One is the test server; the other is a future production server that is hosting some supplemental applications now.

The production server has a tiered license provided by Zend, who is an IBM Business Partner. The development server will run a half-priced version of the license intended for test server installations.

In both cases, installation was straightforward. There are more detailed instructions available for other operating systems and package management methods.

  • My first step was to find other PHP packages on the system.
    [root@192.168.1.1]# rpm -qa | grep php

    And remove each one.

    [root@192.168.1.1]# rpm -e {package name}

    After uninstalling the PHP packages, php.ini will be backed up:

    /etc/php.ini saved as /etc/php.ini.rpmsave
  • Then, I installed Zend Server.

    [root@192.168.1.1]# tar xvzf ZendServer-4.0.4-RepositoryInstaller-linux.tar.gz
    [root@192.168.1.1]# cd ZendServer-RepositoryInstaller-linux/
    [root@192.168.1.1]# ./install.sh

    This script will set up your repositories, and kick off the installation process. It will stop, configure, and restart the existing Apache instance (we’ve kept that as a standard RPM).

The only additional package I needed to install that was not part of the default set was the DB2 driver. You must have a DB2 runtime client on the server at a minimum to use this.

  • Install the DB2 driver for PHP.

    [root@192.168.1.1]# yum install php-ibmdb2-zend-pe

A few tips
Of course, as with any PHP build, some post-installation configuration may be necessary.

I pointed out above that my existing php.ini was backed up after removing the older PHP packages. You’ll want to make sure the old and the new php.ini are functionally equivalent.

  • DB2
    For one of my servers, I didn’t have to follow any special configuration steps to get the Zend Server to interact with DB2, but the other wouldn’t load the DB2 extension at first.

    It failed with the following error.

    PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/local/zend/lib/php_extensions/ibm_db2.so’ – libdb2.so.1: cannot open shared object file: No such file or directory in Unknown on line 0

    The resolution to this issue was simple, it requires you to source the DB2 environment for the Web server user. In my case, I added the following line to the /etc/init.d/httpd startup script:

    . /home/db2inst1/sqllib/db2profile
  • Mail
    I also had to make a small adjustment to my mail directives to point it to sendmail on my system, as described in this forum post.

    /usr/sbin/sendmail -t -i
  • PEAR
    The latest version of Zend Server fixes an issue with the PEAR installer, but if you are using the packaged (not tarball, version 4.0.5) version of Zend Server 4.0.4, you might want to follow the tips in this forum post.

If I run into any other issues or tips on Zend Server, I’ll post updates here.

I also hope to dig into the differences between Zend Core for IBM and Zend Server, in order to evaluate whether it’s a worthwhile cross-upgrade for my server at home that hosts this blog.

Find out more
To learn more about Zend Server from the source, check out the main product page, with pointers to the different editions, getting started tutorials and videos, and the FAQ.

The Zend Server documentation is very helpful too, including sections on best practices for performance and security.

As with Zend’s other products, they’ve also got an active forum for Zend Server.

« Previous pageNext page »