Wednesday, October 29, 2008

GoGrid hosting review

"Cloud Computing" is a new buzz word floating around the computer world. The basic idea is you worry only about your OS or your application, not the hardware.

In my case I wanted something similar to a co-located server, but I didn't want to worry about hardware anymore. There are lots of Cloud services out there, most of them seem to go for the "Cloud Application" approach. Which basically means you host your App on their Cloud and they give you all the distributed Cloud resources you need. But in my case I needed entire Linux and Windows systems, not just a application hosted.

Enter GoGrid. GoGrid from what I understand uses Xen, they have a dozen or so OS Images in certain configuration and through the web interface you basically pick your IP, how much RAM, the OS, and the Image of that OS you want.

So if I wanted to create a new Centos 5.1 Linux LAMP server I'd do the following:
  1. Login to GoGrid
  2. Click the "Add" button
  3. Select "Web / App Server"
  4. Pick the name, IP address, RAM, select Centos, and choose the "LAMP" image
  5. Wait 5-10 minutes
  6. Login
It's actually simpler than this list illustrates. That whole process is one button and a popup with drop-down menu's for all the options.

So from there you have your own Linux machine to get into. For good or bad, it's your machine from there, if you bugger it up it's on you. I have acciedently created a bad firewall rule and locked myself out of my machine and GoGrid tech support was able to get me back in, but I did have to give them my root password to fix my messup.

So from what I've seen GoGrid set's up a basic image for you and gives you a radom generated password from there it's your own setup. If you change the password GoGrid can't get back into it unless you supply it to them.

GoGrid has a nice management screen to take care of all your machines. After you login to you see a list of all of your Machine and can see their status, IP address. You can also choose to reboot, delete, or modify. It's very simplistic and easy to use. I would like to see a "backup", or "snapshot" type button on this page, but I've been told that's in the works.

Billing:

Where this system really shines is the scalability and the way you get billed. I can create 5,10,20, or 30 machines and I only get billed based on what I use. So if I have 30 machines then later finish a project or whatever I can downsize that to 5 machines instantly. You basically pay by the hour, your savings are instant as well.

Compare this to the co-located rack I have at a ISP, I pay XXX/month just for the rack and now that I'm ready to get rid of that rack I have to give 60 days notice. I also have another rack that has some older servers that we're no longer using. So I have to worry about that hardware, can I re-use it, can I sell it, and how much will it cost to move that old hardware?

GoGrid basses everything on the amount of RAM you use. From billing to system resources. For example if you build a 2GB RAM system you have more hard drive space than a 512MB system. I'm not sure the exact disk sizes on the other systems but I get 100GB hard drive space with a 2GB machine.

For billing, they charge you based on the "GB's" of RAM hours you use. For the "Pay as you go" plan it's 0.19/RAM hour. So if you have 10 machines at 512MB or 5 at 1GB you pay the same amount.

Right now I normally have between 5 and 10 machines with GoGrid so I got one of there pre-paid plans which gives you a better per RAM hour rate. The "Advanced Cloud" package is $499/mon and gives you 5,000 RAM hours which basically cuts the cost in 1/2 from the "Pay as you go" plan. Any time over that 5000 RAM Hours then gets charged at 0.10/RAM Hour which is still about 1/2 of the "Pay as you go" plan.

To break down the costs a bit:

For servers running 24/7 for 30 days during a month the RAM Hours would be:

512MB RAM = 360 RAM Hours/Month
1GB RAM = 720 RAM Hours/Month
2GB RAM = 1400 RAM Hours/Month

So with my "Advanced Cloud" package that costs $499/mon I get 5,000 RAM hours that could let me run the follow number of servers in the following configurations:

  • 3 2GB Machines AND 1 512MB Machine
-OR-
  • 7 1GB Machines
-OR-
  • 13 512MB Machines

Again this is just a estimate so you can get a idea of what you get for that price. But the big idea behind it is I can just shut off what I'm not using anymore, or add to it just as quickly.

One quick note on a mistake I made. I thought that "RAM hours" ment the Machine had to be on to use RAM hours, so if I powered the virtual machine down I wouldn't have to pay for the hours unless I turned it back on. But that is wrong, you pay for RAM hours on that machine as long as it exists and you see it through the web interface. To quite paying for a machine you have to delete it, not just turn it off.

Network:

Most admin's are worried about their network connection. For a test application I setup a Asterisk PBX on a Centos GoGrid machine. VoIP is very sensitive to jitter, latency, and bandwidth. But I was successfull in setting up the latest beta of Asterisk (1.6.x, this one dosen't depend on Zaptel or ztdummy) and setup a confence system.

I used Teliax as my VoIP provider and consistantly get ping times in the 10ms range. Usually you want it to be under 50 for decent VoIP quality. So I'm happy to report I've been using it in production for a couple weeks and consistantly have 5-10 peopole calling in at the same time for conference calls with no quality issues.

Most of my users that use Windows use remote desktop to get into the Windows servers. They say it's just as good as the connection to the Windows machiens we have in the office. The Windows desktop's are very fluid with no latency problems. File transfers from offsite seem to do very well too.


What's Lacking:
  • VPN - You can add your own on your Windows or Linux machine but there isn't a default setup. So I find myself creating a Machine just to do VPN for my GoGrid network of machines.
  • Backup or Snapshot - I'd like a way to do backup's and snapshots through the web interface but that's not available now. But you still can do backup's via any other normal means, for me I use rsync and ssh.
  • More RAM - 2GB is the max RAM size you can get. They are supposed to be giving us the option for 4 and 8GB of RAM but I don't know the ETA on that.
  • Can't make your own image - Your stuck with the image choices they give you. So if you wanted Ubuntu, Gentoo, WinXP or something like that your out of luck. This is another one of those things they are supposed to add, but there is no ETA on it yet.
  • Network Storage - There is no central NAS/SAN type of storage. They are supposed to add it, but there is no ETA.

Conclusion

Overall I think it's a great service. I prefer this over getting a co-lo server or rack at some facility. GoGrid seems very active on adding features and fixing bugs and their support has been very good.

The features they are lacking right now aren't holding me back from using it in production but I am waiting on some key features such as more RAM and network storage. Before I can move the majority of my network over.

In the meantime I'm happy I got rid of a rack of servers and have gained the flexibility to increase or decrease server capacity based on my companies needs in minutes.

Sunday, August 17, 2008

Top 5 Annoying things about my MacBook Pro

I just started a new job and they offered me a choice of a Mac or a PC. I've always been too cheap to buy one myself so I was excited to get one for work to give it a try. I've had this new MacBook for a couple months now and just needed to vent some of the annoying things I've found.

Overall the Mac OS 10 is pretty impressive. Being a Linux guy, it's nice to be able to get into the guts of the OS and have familiar Linux like tools. But with any system there are positives and negatives. So to get on with it here are the:


Top 5 Annoying things about my MacBook Pro


#5 No right click

I don't know what the Mac fascination is with a one-button mouse, but this gets old real quick. You can use the keyboard key "cntrl" in combination with a mouse click, but that's pretty annoying.

It's a easy fix to get around, the Mac OS has supported every USB mouse or keyboard I've tried to use, and the "right-click" on every mouse I've tried works as expected.


#4 No Number keypad

I'm looking at this keyboard as I type this article and there is 2 1/4 inches to the left and right of the keyboard. It's being used for speakers, but there is plenty of real estate to allow for a number pad.

Mac's I've noticed are the "pretty boys" of the computer world and I think the MacBook Pro didn't have the right look with a keyboard that included a number pad.

It's easy enough to plug in a USB keyboard or number pad, it's just annoying to have to carry that crap around.


#3 Not ergonomic

The MacBook is beautiful, Apple has always done a great job of making some of the best looking laptops out there. But ergonomics is one of those things that takes a back seat to looks for Apple.

I'm at a computer almost every waking hour and have carpal tunnel type problems so I'm sensitive to the ergonomics of the machines I use. They keyboard and touchpad are very high up on the MacBook Pro putting your wrists in a very bad position if you like to rest them on the laptop while you type or use the touchpad.

If the keyboard and touchpad were located lower on the laptop your wrists would be able to bend in a more natural position. To get around this I find I have to hold my hands and wrists hovering over the keyboard, this works nice but it's tiring to do for very long.


#2 No docking station

Most major notebook manufactures have docking stations you can use. Mac doesn't offer one. You can get a USB docking station, but that doesn't help you with video, sound or power.

My guess is Apple hasn't been able to make one that's pretty enough or they don't have enough corporate type customers making requests for them.

So the end result is I have to plug in a bunch (Power, DVI, Ethernet, USB Devices) of stuff every time I go somewhere with my MacBook. Livable but annoying.


#1 Can't operate MacBook with lid shut

This is absolutely maddening. You shut the lid, MacBook goes to sleep. Period. There doesn't seem to be any way around this.

Alright, the MacBook I have has a very nice screen, but I have a better screen at work. I don't have the desktop real estate to have two side-by-side screens. Sense I can't operate the MacBook with the lid shut (like you can with every other laptop on the planet), I'm stuck with the MacBook screen instead of the nice big screen I could use at work.

With most laptops you can keep the laptop closed and plug in an external monitor, but there is no way you can do that with the MacBook. Very very annoying, epically sense there is no workaround.


In Conclusion

Overall I like my MacBook Pro. It's a solid sleek machine, but it's got it's own set of flaws. If I was on a budget and needed to buy a personal laptop for myself, I'm not sure if I would get a MacBook or not. If it was 20-30% cheaper it would be worth it, but given the cost combined with the annoying things I've discovered I'm not sure if I would get a MacBook or not.

Overall with a MacBook your paying for hardware that is allowed to run the Mac OSX operating system, so if you prefer OS X there really isn't a option. I've only been using OS X as my primary OS for a couple months so I haven't made up mind on that one yet. I'll put out another article when I do.

Tuesday, June 10, 2008

Published books and articles by Keith Pettit

I find myself loosing track of some of the past work I've done. So I wanted to quickly jot down the published books and magazine articles I've done.

Books:

Installing, Configuring, and Customizing SuSE Linux
by Keith Pettit, David Lew, Joe Brockmeier, Charles Coffing, Tony Ho

* Publisher: Premier Press
* Pub. Date: April 2000


Install, Configure, and Customize Slackware LINUX
by Joe Zonker Brockmeier, Jacek Artymiak, Andy Harris, Brian Proffitt, Charles Coffing, Keith Pettit , William E. Schaffer


* Publisher: Premier Press

* Pub. Date: 2000


Magazine Articles:


Magazine: SysAdmin Magazine
Article: Managing Services with Webmin
Description: Pettit describes Webmin, a modular Web-based configuration tool that allows you to configure just about every service available on Unix.

Magazine: Linux Format Magazine
Article: Embedded Linux • Keith Pettit
Description: Introduction into embedded Linux. It was Magazine's cover article.

Open Source Benifits Explained

This was a article I wrote in 2004 to explain why I liked the idea of using Open Source programs for a Utah Voting System.

Keith Pettit on Open Source software
"The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for software, the software evolves. People improve it, people adapt it, people fix bugs. This can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing." --opensource.org

Open Source development is similar to the Democratic form of government. People have the opportunity to participate in government, and change/add/modify legislation. Everything is open to the public for better or worse, bad pieces of legislation are flushed out, and new better legislation takes its place.

Open Source uses that same model, the code is open for people to view and change. For a public project such as this is seems paramount that we would want a system that has been looked over by as many eyes as possible and is open to change as needed.

IIS, which is Microsoft's Internet web server application is a closed source application developed by the worlds largest and most powerfull software company. The source code is closed.

Apache is a web server developed with the Open Source model by thousands of different developers with source code that is open for the world to see.

Ask any company developing from scratch which Web Server application, IIS or Apache, they would use. The answer would be Apache because Apache is more secure, reliable, configurable, and scalable. IIS is not very secure, reliable, or configurable. It has been the subject of countless viruses and attacks. In most instances for core applications, the open source module has produced superior software.

I have been a Database Administrator, Programmer, and Systems Admin over the last 7 years I've personally converted 4 companies from closed source applications such as IIS, Microsoft SQL server, ASP, etc to Open Source applications such as Postgres, MySQL, Apache, perl, PHP, etc. And in every case we saved money, decreased development time, had better security, and better flexibility. This is what the open source model brings.

Open source is the only logical way to go. To pay a company to create a closed source application is insane. The tax payers dollars would be better served creating a open source project that everybody can benefit and contribute too. Short and Long term this will give us the best value.

Keith Pettit, keith@setuplinux.com
SetupLINUX.com

Thursday, May 29, 2008

Leaving PHP for a new love; Python over Perl and Ruby

Ok, it's a corny title. But I had a new project that was primarily a commandline (CLI) application, but also had GUI components. I also needed this to be able to work in Linux and Windows. PHP just doesn't do the trick for these kind of things.

I've got about 8 years of LAMP type programming and still love PHP, but I new PHP wasn't going to be up to the task for this project. PHP is great for web apps and simple CLI stuff but that's pretty much it. In the past I've created some CLI PHP scripts which work pretty well, but it lacks the power of other launguages. Also there are no viable GUI tools avaiable for PHP which was a requirement for my project. Basically PHP was made to be a web programming language and everything else is a afterthought.

So with this in mind I started evaluating other launguages. As part of my project requirements it needed to be a scripting language and be available on older Linux systems (specifically RHEL 3). Initially I started looking at shell languages like Bash, CSH, KSH but quickly found out I wasn't going to get the power and flexiblity I needed. So I started looking at Ruby, Python and Perl.

I wanted to make the right decision here so I took some time and read as many language comparision articles as I could find. I downloaded and installed my own copies of Ruby, Python, and Perl and started to play. Went through the "Hello World" type examples and spent some time just experimenting with the languages.

Initially I was trying to find out how usuable the old version of the languages were on my rhel3 systems, then see how easy it was to install localized $HOME versions. Overally I was trying to get the idea of flexibility and system usablility.

Existing modules, frameworks, toolkits and overall community support was a big issues for me as well, so I made the rounds checking out what I could and getting the overall vibe from the languages.

I don't want to drone on forever, sense there are quite a few good low level languages comparisions. I'll just focues on my overall impression. Languages can be almost religious for some, so save the hate mail. This is just my opinion:

Ruby:

Great object oriented language, but overall to "new". Not quite as polished as Python, or extensive as Perl. There wasn't the community arround it like Perl and Python had and it dosen't have nowhere near the modules, framworks and toolkits that Perl or Python have.

So the end result for me was; I like it but it's not quite there yet.


Perl:

Perl seems like it's been around sense the dawn of time, and it's showing it's age.
The language itself seems more like a bash scripting than a modern programming language. For me it was hard to use and cluttered. There doesn't seem to be the language consistancy that Ruby and Python had. I think that just comes from being around so long and getting all this language clutter buildup.

Overall I like Perl for CLI text processing and the like, but for a cross-platform application it's lacking compared to Python and Ruby. As a newbie to all 3 languages Perl just seemed harder to learn for me than Ruby or Python, it just seemed cluttered and harder to use.


Python:


Python's for me is at that perfect stage, it's got all the features I was looking for and none of the cruft like the older languages. It has the best "out of the box" feature set I've found on older and newer versions of the languages. I could do CLI, and GUI programming for Linux and Windows with the same code which was very appealing. For my project I have CLI parts and GUI parts, initially it needs to work on Linux and later on Windows. Overall this seemed like the best fit.

The language syntax was a bit odd for me when I first started with it, but I've grown to like it quite a bit and appreciate the syntax and formating. There is massive community support, and even companes like Google are putting it out there for everybody to use (Google App Engine).


Conclusion:

I don't have that religios zeal for Python yet. But in love with Python as a scripting language that allows me to write code that worked on Linux and Windows with both a CLI and GUI interface. To get more familary with the language I started using iPython as my Linux system shell and love the outcome.

Next for me I want to check out web programming with Python and I'm curious how it compares with PHP. I've just started with Django and playing a bit with Google App Engine, I like what I see so far.