Blueprints for High Availability
Evan Marcus and Hal Stern
344 pages
Wiley, 2000
$49.99
ISBN: 0471356018
http://www.wiley.com
High availability means very rarely being unavailable, and this book is all about building systems that play the nines game trying to achieve up times in the area of four nines (99.99 percent, or about 53 minutes of down time per year) or even five nines (99.999 percent, or about 5 minutes of down time per year). Chapters in the book include: What is Resiliency?; Twenty Key System Design Principles; Highly Available Data Management; Redundant Server Design; Failover Management; Failover Configurations and Issues; Redundant Network Services; Data Service Reliability; Replication Techniques; Application Recovery; Backups and Restores; System Operations; and Disaster Recovery.
Its fairly easy to characterize the flavor of this book: it is all about creating and operating highly available systems, written at the level and viewpoint of system administrators. Thats not intended to imply that programmers who design and implement transaction processing systems at lower levels will find nothing of use here. On the contrary, in creating detailed designs for such systems, the voice of experience of people whove operated such systems in real life is extremely welcome. The context of some of the advice here is Unix-flavored, but much of the information is not really specific to any single operating system.
This book mostly has two types of information that are interwoven: things that will keep your system from being highly available, and things you can do about it. They do an excellent job of hitting all the potential problems you should think about if you need a system that must not be down for any significant amount of time, hitting literally everything from hard disk failure to earthquakes. Without getting into details of particular products, they also manage to touch on a great many designs and configurations that you are likely to encounter when putting together commercial products to build a reliable system. They also provide readable and brief introductions to standard transaction processing concepts, such as RAID, transaction protection, database replication, and so on.
Although the book does not descend deeply into particular technical topics, it does periodically dip down fairly low and give useful pointers. For example, theres no attempt to explain TCP/IP in general (thank goodness), but when discussing the restarting of applications, the text does quickly point out that youll want to be aware of the SO_REUSADDR socket option and some TCP configuration issues in order to avoid getting a classic address already in use when you try to restart.
While the book does not typically descend into great detail (no code here!), it is relentlessly practical. For example, in the section on failover configurations, the authors take time out to examine the question of getting useful work out of a standby server. In theory, the standby server just sits there, waiting for the real server to fail. In practice, which the authors seem well acquainted with, theres going to be considerable pressure to justify that expensive backup server by having it do something productive during the 99% of the time its really just waiting for a failure to occur. As another example, the authors argue for selecting highly memorable and distinct DNS names (such as cartoon character names) for machines, based on the experiences of system administrators under pressure to quickly reboot a system and the consequences of mistyping a server name at that point.
Another way the authors relate hard experience is via the Tales from the Field that are scattered throughout the book. Usually, I find this type of device irritating, but I felt they served a real purpose here. Hearing real-life stories of how the unexpected brings down systems (such as the site that bought very expensive backup generators, but realized only too late that no one had ever bought fuel for them) is helpful in overcoming the natural tendency to gloss over potential problems that seem individually unlikely. Overcoming the human tendency to assess risk incorrectly is crucial in building reliable systems that actually deliver.
This book is like sitting around a table with the authors, listening to them tell you what problems and solutions they know of, what things they tried that worked, and what things they tried that didnt work so well. Its informal and not technically detailed, but still quite informative, and an easy read. If youre involved in the construction of such systems for the first time, this is a very good book to read in order to get acquainted with many issues you may encounter, and solutions you may want to consider.
Programming Windows Services
Randy C. Morin
429 pages
Wiley, 2000
$49.99 (includes CD-ROM)
ISBN: 047138576X
www.wiley.comFor this book, the subtitle is perhaps more descriptive than the title: Implementing Application Servers. This book winds its way through a number of topics related to creating application server software under NT. Chapters include: Programming NT Services; The Event Log; Configuration; Security; and Debugging.
Probably the best description of the book is in the preface, where the author relates participating in software development projects that followed a pattern. An application server is written as a dialog-based process that writes to text log files, communicates via sockets, and is configured with .ini files. The server evolves eventually into dropping the dialog in favor of the service control manager interface, using the event log, and being configurable via the registry or MMC. As the preface claims, this book is a somewhat quick and in-depth tutorial to get you started immediately using Windows Services and all that they have to offer. More specifically, it shows you how to implement your application server as an NT service (so it can be controlled remotely and run continuously), use DCOM for network communication instead of a sockets-based mechanism, use the event log for recording data, and use the registry or MMC for configuration.
The book is 429 pages, but is heavy on listings and screen shots, so the actual text is much, much less than that. Some topics have more depth than others, and some odd things are included, such as how to write a control panel applet (much more appropriate for drivers than server processes) and, more strangely, how to use the debugging API to intercept OutputDebugString() output. Its not a book I can widely recommend, especially not at $50, but I think it largely delivers on what it promises, which is to give a quick tutorial about a group of topics of relevance to creating application servers. If thats exactly what youre looking for, then this is the book for you. However, I think most programmers will find a number of areas (DCOM, security, OLEDB, MTS, etc.) that will require other $50 books before the code progresses very far. In that case, you might want to forego this book and apply the $50 directly towards getting the more detailed information youre going to need.
Liming. Windows NT Embedded, Step by Step. (Annabooks, 2000). 236 pages. $44.95 (includes CD-ROM). ISBN 0-929392-68-X. Mostly a screen-shot laden guided tour of how to use Target Designer and Component Designer.
Martinsson. ActivePerl with ASP and ADO. (Wiley, 2000). 289 pages. $39.99, includes CD-ROM. ISBN 0-471-38314-7. Perls available for Windows and competing for your VB affections.
Matthew and Stones, et al. Professional Linux Programming. (WROX, 2000). $59.99. ISBN 1-861003-01-3. A pretty good smattering of a large number of topics of interest to programmers trying to get up to speed on Linux. Topics include debugging, testing, Bison, Flex, data storage (PostgreSQL, MySQL), GUIs (KDE and GNOME), PHP, Python, RPC, CORBA, CVS, and more.
Nebbett. Windows NT/2000 Native API Reference. (MacMillan Technical Publishing, 2000). 496 pages. $74.95. ISBN 1-57870-199-6. A reference manual for that most popular target of reverse engineers: the low-level NT ZwXxx() API.
Papa, Brown, Caison, DeBetta, and Wilson. Professional ADO RDS Programming with ASP. (WROX, 1999). 585 pages. $49.99. ISBN 1- 861001-64-9. How to access and manipulate data on your website using ADO (ActiveX Data Objects) and RDS (Remote Data Services).
Schmitt. International Programming for Microsoft Windows (Microsoft Press, 2000). 469 pages. $49.99, includes CD-ROM. ISBN 1- 57231-956-9. Essential guidelines for globalizing and localizing your software, for those not willing to wait for the world to switch to English.
Spencer and Goncalves. Window 2000 Server, Management & Control. (Prentice Hall, 2000). 356 pages. $39.99, includes CD-ROM. ISBN 0-13-923533-7. Covers Active Directory, DNA, management console, VPNs, and integration with Microsoft Systems Management Server.
Sundblad and Sundblad. Designing for Scalability with Microsoft Windows DNA. (Microsoft Press, 2000). 453 pages. $49.99, includes CD- ROM. ISBN 0-7356-0968-3. Includes overview of Windows DNA, introduction to XML, MTS, and COM+.
Viscarola and Mason. Windows NT Device Driver Development. (MacMillan Technical Publishing, 1999). 684 pages. $50.00. ISBN 1- 57870-058-2. All about writing kernel-mode drivers for NT.
Watts, et al. Implementing SAP R/3 Using Microsoft Cluster Server. (Prentice Hall, 2000). 309 pages. $49.99. ISBN 0-13-019847-1. IBM book about combining SAP R/3 Microsoft Cluster Server and IBM Netfinity servers.
Dell. MCSE Implementing and Supporting Microsoft Internet Explorer 5 (Prentice Hall PTR, 2001). 467 pages. $49.99. ISBN 0-13- 014268-9.
Bhardwaj, et al. MCSE Windows 2000 Professional (Osborne, 2000). 793 pages. $49.99, includes CD-ROM. ISBN 0-07-212389-3.
Bhardwaj, et al. MCSE Windows 2000 Directory Services Administration (Osborne, 2000). 803 pages. $49.99, includes CD-ROM. ISBN 0-07-212380-X.
Bhardwaj, et al. MCSE Windows 2000 Server (Osborne, 2000). 803 pages. $49.99, includes CD-ROM. ISBN 0-07-212386-9.
Bailey, et al. MCSE Windows 2000 Network Administration (Osborne, 2000). 939 pages. $49.99, includes CD-ROM. ISBN 0-07- 212383-4.
Foxall. MCSD In a Nutshell: The Visual Basic Exams (OReilly, 2000). 612 pages. $29.95. ISBN 1-56592-752-4.
King. Java Programming: From the Beginning (Norton, 2000). 788 pages. $42.00. ISBN 0-393-97437-5. An in-depth tutorial to prepare the reader for more advanced Java books.
McMahan. Automating Windows with Perl (R&D Books, 1999). 209 pages, includes CD-ROM. ISBN 0-87930-589-4. Using Perl on Win32 for various tasks: sending SMTP email, automating backups, creating CGI scripts, etc.
Microsoft. Desktop Applications with Microsoft Visual C++ 6.0 MCSD Training Kit (Microsoft Press, 1999). 685 pages. $69.99, includes CD-ROM. ISBN 0-7356-0795-8.
Prosise. Programming Windows with MFC, Second Edition. (Microsoft Press, 1999). 1,337 pages. $59.99, includes CD-ROM. ISBN 1- 57231-695-0. The greatly revised new edition of the classic book on MFC programming.
Roth. Win32 Perl Programming: The Standard Extensions (MacMillan Technical Publishing, 1998). 614 pages. $40.00. ISBN 1- 57870-067-1. For intermediate and advanced Perl programmers who have at least a basic understanding of Win32 platforms.
Swanke. VC++ MFC Extensions by Example (R&D Books, 1999). 643 pages. $49.95, includes CD-ROM. ISBN 0-87930-588-6.
Velte and Velte. Windows 2000 Enterprise Networking (Osborne, 2000). 762 pages. $44.99. ISBN 0-07-212049-5. Create, administer, and customize Windows 2000 enterprise networks with the techniques covered in this volume.
Go to www.wdj.com/vendor/ to learn how to submit a book for review.