New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Abel Avram on Dec 11, 2008
In his article, Mak King presents the benefits of using VMware as a virtualization solution in order to create a better development environment that proves to be ecologically greener if the process is taken beyond server consolidation.
Read: Beyond Consolidation: Building a Better Development Environment with VMware
Mak describes how he transformed their lab’s systems configuration by introducing VMware and resulting in:
- The lab is much easier to manage. Going from 13 disparate devices to 3 identical devices has made it much simpler and easier. Getting rid of KVMs, LCDs, small UPSs and all the cables that go along with them has allowed me to shrink the space used in the lab by 85%.
- Flexibility is greatly enhanced. For example, we were able to determine the optimum amount of resources (both RAM and number of processors) for particular database queries by adjusting the number of resources allocated to a VM, and repeating test jobs until we hit a point of diminishing return. Doing that with physical hardware would have been a nightmare not only with hardware cost but also with time.
- Network throughput has increased. Previously, the network throughput of each device was limited to the number of nic ports it contained - in most cases just a single one. Now that each ESX host contains multiple nics, each with several ports, these are teamed for doubling the available bandwidth, as well as providing network redundancy in case of nic failure. Due to this configuration, I have also seen a reduction in the time it takes for backups.
- The use of HA, DRS and VMotion has greatly improved our redundancy and uptime.
Getting Started with Stratos - an Open Source Cloud Platform
Mobile and the New Two-Tiered Web Architecture
Agile Development: A Manager's Roadmap for Success
SOA All-In-One Guide: KPIs & Best Practices, ESB Report
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
Since most developers need some kind of GUI to use their development tools, it's highly important to have session mobility and persistance. Using vmware for "desktops" is nice, but it's just slow using these "desktops" via existing remote-gui tools, like terminal services or vnc. It's even worse in the UNIX world, where remote-X terminals exist for many years now - but session persistance is really a dream for the moment. Only alternative is to run a full-blown "server" on the vmware desktop, be it windows with terminal services or unix with an X server. There are no slim solutions to have the developer's laptop resources used as much as possible, with the actual development tools running on the remote servers inside a persistent session that does not take gigabytes of memory (other than the development tool itself).
One thing that's not uncommon in development setups is the need to do performance tests (e.g. to ensure that recent changes in the code have improved -- or at least not decreased -- performance). If the performance tests are run on a VM, how certain can we be that a sudden decrease in performance isn't simply due to activity in another VM on the same physical machine?
Well besides the fact that the VMware VIC client supports Unity-like features, there's at least ten other ways to solve your session persistence issues. Check out VMware Fusion (if you are a Mac guy -- I'm not) or Workstation's use of "Unity" aka View. VMware's new VDI (Virtual Desktop Infrastructure) is called View, actually.
Before VMware, I would use FreeNX (mostly because it's free and supports Linux), but I've also used 2X (a commercial Windows-compatible alternative). I have never used the full version of NX, but I like FreeNX so much that I would pay for it if I had the funding and reason.
If you have Windows Server 2K/2K3/2K8 you can also use the mmc with the Remote Desktops snap-in. This will allow for session persistence in a similar way that RDP via Terminal Services Manager "attach session" option (ghetto IMO) would allow. You can save mmc panels (e.g. to the Desktop) once you configure your infrastructure to it.
For a laptop solution, check out Safebook LVO, which is a Lenovo Thinkpad thin client.
Also, none of this is slow when you have six Gigabit Ethernet interfaces per server and the ability to balance resources across multiple cores and memory banks.
So, yes, VNC and the X-Window environment are bad for session persistence. Fortunately, they were replaced by NX/FreeNX/2X and/or a simple Remote Desktops mmc snap-in.
Thanks for the question Eric. I have been experimenting with some various monitoring tools to compare the performance of the host with the actual VMs running on the host. You can do some of this within the VIC by selecting different counters. SolarWinds also has a free tool called VM Monitor that displays proc, mem and network activity not only for the host, but all VMs running on it.
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
4 comments
Watch Thread Reply