Does Enterprise Development Have to Be Painful?
Despite the buzz about social networking, mashups, collaborative filtering, machine learning, and everything else grouped under the convenient label of Web 2.0, writing business software seems to be business as usual: push messages around, present data entry screens, produce reports, and occasionally make people’s work easier by automating repetitive tasks. I fled corporate IT in 2000, believing that business software—especially “enterprise software”—is bulky, complex, and uninteresting.
It can be. Enterprise-wide software must be reliable and fault-tolerant. That’s not simple or easy or even fun to build. Unless you have the time and resources and talent to write and maintain and deploy your own completely custom software (who does?), you use generalized software packages and adapt them to your business. Only the generality of such a framework offers the potential for customization… at the cost of complexity.
Recently, Tim O’Reilly spoke at SAP’s Tech Ed Conference. He found inspiration in subsequent conversations, and wrote SAP as a Web 2.0 Company?. SAP Labs invited other O’Reilly folks to see what they’re working on and to ask for advice on how to engage the large community of SAP users, developers, and consultants more effectively.
I went there, and met Will Gardella (see SAP’s Composition on Grails). His work convinced me that my perception of SAP and its software was incomplete. While there’s still necessary complexity in producing robust, reliable, business-wide and business-critical software, writing that software does not have to be an exercise in tedium. Will, Moya Watson, and the other people I met actually live that idea.
The team at SAP made me an offer. If I would give their software a fair try and write about my experience installing it, learning it, and building a couple of modest sample applications, they’d give me all of the support I wanted. We decided that the right approach was to explore the software behind Will’s Groovy on Grails, so I agreed to install and explore the SAP development environment called SAP NetWeaver Composition Environment, or SAP NetWeaver CE.
Why does this matter?
- Business software isn’t going away. If you’re a consultant or a small ISV, you probably make money writing, customizing, and maintaining software of this sort. Maybe your platform isn’t J2EE or ABAP, but learning an extra tool and platform gives you and your customers more options.
- Most of the components in this stack are at least open standards. Some are free and open source software. You can interact with a SAP installation through SOAP/WSDL, with Groovy, and as a J2EE provider. SAP NetWeaver CE itself is an Eclipse-based IDE. These are well-established and well-understood technologies, not a proprietary concrete jungle.
- It’s good to learn something new. I haven’t done serious Java development in several years. Most of my recent programming is low-level, cross-platform C code. Stretching my brain and switching habits away from my Vim, GCC, Valgrind, and GDB habits helps me grow as a developer.
- Good development habits and good ideas come from all over. SAP NetWeaver CE and some of its tools encourage a nice separation of concerns that, applied well, appears to allow a rapid yet robust approach to developing and deploying applications. I’ve built MVC applications in several languages, but it’s nice to see it encouraged as well as it is here.
My initial impression was, “This software sounds great, if you’re an expert already.” Will and Moya have built impressive systems, but they’re experienced SAP insiders. I’d have to start from zero, relying only on a decade of experience building software, mostly in different realms.
I’d long heard that installing and configuring SAP was complex. Thus, downloading and installing the SAP NetWeaver Composition Environment was my first milestone. Once I’d accomplished that, I could survey the landscape and review my initial impressions. Even discovering what I needed to download took some time, so I gave myself a week. I relied heavily on help from Armand Wilson, a consultant within SAP for advice over email (and once, via telephone and a shared desktop) to resolve at least one troublesome problem.
None of the machines in my office were suitable installation candidates. I convinced O’Reilly IT to loan me a spare ThinkPad with a 1.5 GHz Centrino CPU and 2 GB of RAM—and, most important, a fresh Windows XP installation. A virtual machine image will, apparently, not do the trick, even on a monster multi-core 64-bit Ubuntu development box.
Installing the SAP Server
Armand told me to download the SAP NetWeaver CE Trial Version from SAP NetWeaver Composition Environment Downloads on the SAP Developer Network (SDN). This file is really big; it’s an RAR file more than a gigabyte in size. I never successfuly completed a download on the ThinkPad due to a combination of wireless networking and server cancellations.
After several abortive attempts, I downloaded the file on a Linux machine thanks to curl and resuming downloads, extracted the archive there, and used rsync to copy all of the files from the Linux machine to the Windows machine.
This gave me a directory that included an HTML file called Start. I launched the HTML file and skimmed the instructions. An installation link in the sidebar prompted me to download or save an executable file named sapinst.exe. I launched it myself from JavaEECE71_03_IM_WIN_I386_ADAsapinst.exe.
Unfortunately, the whole directory path had spaces in it, so the installer refused to run. I moved the top folder to C: and this time the installer launched successfully. It offered only a few prompts: accept the license, specify a SAP system ID (I kept the default of CE1).
The next step asked for my JCE unlimited strength jurisdiction policy archive. I didn’t have one, so the installer refused to proceed. I found the JCE on Sun’s Java downloads site. I extracted the JAR file from the ZIP, and gave the installer its path. That didn’t work either. When I gave the installer the full path to the ZIP file, it proceeded.
Next, it asked for a master password for the server. This step gave me some trouble. The installer rejected my first, a strong password with non-alphanumeric characters. I wondered if it only allowed alphanumerics, then finally read the password directions and realized that it was one character too short. I’ve spent too much time working around bad password systems to trust that any password system could actually work well.
I wrote down the password. I had a feeling I’d use it later.
The installer then scanned my system and helpfully reported that I had 2047 megabytes of memory and the minimum recommendation is 2048. I risked it, as I couldn’t find a spare 1 MB stick and an empty slot in the ThinkPad. The installer purred through all 33 installation phases.
I told Armand that I thought I’d completed things on my own. He asked the innocent question, “Is the SAP server running?” He told me to launch the management console to verify that both little icons in the left tree under the SAP Root and CE1 were green. They looked green to me, but when we looked in the Process List entry under both icons, neither service was actually running.
After more scrambling, I noticed that I had two SAP management consoles running. I closed both consoles and waited for a moment, then launched only one console and attempted to start both services. Twenty minutes later, they had both started. Step one was complete. With a better download system than I have—and existing hardware—you should be able to install an SAP server in two hours. Read the installation requirements better than I did, and you should have no trouble.
Installing the SAP NetWeaver Composition Environment with IDE
Step two was to install the developer components, including the Eclipse-based IDE. I went to the same SAP download page as before and downloaded only the Developer Studio, which seemed slim at 680 megabytes. This was a mistake. I needed the 1.2 gigabyte Composition Environment download. The smaller download lacks the Composition Environment plugins for Eclipse. Unfortunately, I only discovered this when I started to build applications, and I found no good way to install the plugins separately. I had to uninstall and reinstall, but that only took a few clicks and some time.
The downloading process was again painful, but the Linux/rsync approach worked fine. Installation proceeded until the installer tried to find JDK 1.5.0_06 or better on my machine.
I knew I had one installed, but I couldn’t find it either. After another trip to Sun’s download page, I had installed the entire JDK. I even included the optional parts I knew I didn’t need, as my instincts had already led me astray enough.
The installer ran for an hour and then wanted to connect to the Internet to perform more updates. I let it update everything.
With the proper package downloaded and installed, I was ready to write applications—starting by working through the example code Armand provided.
The two most difficult parts of the installation process, for me, were almost entirely external. One was getting the right hardware, and that’s because of a little scramble in our IT department right before the Christmas holidays. The other problem was getting a reliable download onto the ThinkPad. If I had a much faster Internet connection, or if I were more familiar with the Windows tools for managing long, potentially-interrupted downloads, that process might have been easier too. I spent most of a work-week downloading the software.
Both installations were time-consuming, but not troublesome. Paying more attention to the installation instructions, particularly the dependencies, would have saved me time. I did search SDN for some error messages and workarounds to see if I could find solutions for any problems I encountered, but I seem to have avoided any serious troubles not of my own making. Even the one problem I had with SDN (an invalid download link from a Wiki page) saw a very quick fix from Moya Watson.
I have a lot to learn to write applications with SAP NetWeaver CE, but I’m past the first hurdles, and that gives me a lot of confidence that things will make a lot of sense in context from here. While the download-and-go score is much less than the simple aptitude install build-essential I normally use on a new machine, the immediate out-of-the-box capabilities are greater. Writing software this way may be much easier than I thought.