<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geek on the Loose &#187; Network</title>
	<atom:link href="http://www.geekontheloose.com/network/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geekontheloose.com</link>
	<description>Just another girl-geek weblog</description>
	<lastBuildDate>Thu, 25 Mar 2010 04:17:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A Loosely Coupled Cloud</title>
		<link>http://www.geekontheloose.com/network/cloud/a-loosely-coupled-cloud/</link>
		<comments>http://www.geekontheloose.com/network/cloud/a-loosely-coupled-cloud/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 05:09:04 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=215</guid>
		<description><![CDATA["Build loosely coupled systems." That was one nugget of recurring advice given last night by Jorge Noa, CTO of HyperStratus when he spoke at a meet-up titled "Amazon EC2 Cloud Computing and Application Design" held at HackerDojo (see slides here - pdf and I also found the same slide show already online here as an [...]]]></description>
			<content:encoded><![CDATA[<p>"Build loosely coupled systems." That was one nugget of recurring advice given last night by Jorge Noa, CTO of <a title="Cloud Computing Services" rel="nofollow" href="http://hyperstratus.com/">HyperStratus</a> when he spoke at a meet-up titled <a title="Amazon EC2 Cloud Computing and Application Design" rel="nofollow" href="http://www.meetup.com/cloudcomputing/calendar/12584958/">"Amazon EC2 Cloud Computing and Application Design"</a> held at HackerDojo (<a title="Amazon EC2 Cloud Computing and Application Design" rel="nofollow" href="http://files.meetup.com/677520/Amazon%20EC2%20%26%20Application%20Design.pdf">see slides here - pdf</a> and I also found the same slide show already online <a title="Amazon EC2 Cloud Computing and Application Design" rel="nofollow" href="http://www.slideshare.net/oreillymedia/oreilly-webcast-architecting-applications-for-the-cloud">here as an O'Reilly Media Slideshare</a>).</p>
<p>After a review and comparison of various IaaS, PaaS and SaaS services, the talk then focused on details of Amazon's overall cloud offering. Finally he finished out the presentation with a discussion of software developer best practices - the primary reason I attended. More time spent on software development would have been a big plus in my view, but I can understand that he felt the need to get everyone in the room up to speed on Amazon's platform. It was a big crowd.</p>
<h3>Cloud Computing Development Best Practices</h3>
<p>The ten best practices Jorge espoused were:</p>
<ol>
<li>Build cloud apps, not apps in the cloud</li>
<li>Virtualize the application stack</li>
<li>Design for failure and nothing fails</li>
<li>Design for scalability</li>
<li>Loose coupling lets you maximize plug and play</li>
<li>Design for dynamism</li>
<li>Build Security into every component</li>
<li>Leverage native cloud storage options</li>
<li>Leverage best cloud Management Tools</li>
<li>Don't fear cloud constraints</li>
</ol>
<p>Of those ten, the two points that gave me the most pause for contemplation were to "build loosely coupled systems" and to "build security into every component."</p>
<h3>Build Loosely Coupled Systems</h3>
<p>"Build loosely coupled systems" brought a flash from the past, triggering a memory of a distributed operating systems class I had in the 1990s. The concept of loosely coupled systems was new for me back then and made a big impression, so I dug out my old textbook (yes, I kept them all!) to refresh my memory. The textbook was <em>"Modern Operating Systems"</em> by Andrew S. Tanenbaum.</p>
<p><span id="more-215"></span>Skimming through the material, even though it's dated, it's still relevant to today's cloud environment. While the Tanenbaum book was focused specifically on operating systems, Jorge's cloud development recommendations of "use independent components", "design everything as a black box" and "load-balanced clusters of black boxes" have much in common with a distributed OS design.</p>
<p>Tanenbaum offers much more detail in his section on design issues of distributed systems that seems relevant in this context, with the first being transparency.</p>
<ul>
<li>Location transparency - we want to design software so that the actual location of other resources is irrelevant. They could be in the same local Amazon zone, or they may be halfway around the world - it should not matter</li>
<li>Migration transparency - not only must we not care where the resources are, we also must allow resources to move about seamlessly</li>
<li>Replication transparency - we must be able to make additional copies of resources without side-effects</li>
<li>Concurrency transparency - we should be able to share resources concurrently</li>
<li>Parallelism transparency - Tanenbaum points to this as the most difficult to achieve, the ability to process in parallel seamlessly without the need to explicitly cause that to happen</li>
</ul>
<p>We may be designing black boxes, but they need to be black boxes that can operate transparently with one another.</p>
<p>The other important design characteristics that Tanenbaum discusses are flexibility, reliability in terms of availability and fault tolerance, performance, and scalability. I think these points are a bit more obvious and won't add any further explanation.</p>
<h3>Cloud Computing Security</h3>
<p>The other main point I've been contemplating since the talk is in the area of security. Being the development security evangelist at my company, it was natural that I'd focus in on the brief security portion of the talk. I'm sure that an entire meet-up could easily be filled just on the topic of security, so the single slide on the topic rubbed me the wrong way.</p>
<p>Jorge's bullet points were as follows:</p>
<ul>
<li>Use de-perimiterized security model</li>
<li>Create distinct network Security Groups for each Amazon EC2 instance cluster</li>
<li>Use group-based network rules for controlling access between components</li>
<li>Restrict external access to specific IP ranges</li>
<li>Encrypt data “at-rest” in Amazon S3</li>
<li>Encrypt data “in-transit” (SSL)</li>
<li>Consider encrypted EBS file systems for sensitive data</li>
</ul>
<p>While these seem like a good starting point, I want to delve into a little more detail on some of the points.</p>
<p>De-perimiterization, as I understand it, means moving the burden of security onto individual machines and applications. While this pushes the security to where the threat is, it seems to me that it also raises the maintenance overhead of security and I would think that could lead to a higher risk of not keeping all of the instances in-sync and current in terms of their security footprint. I suppose the next two bullet items are meant to address that issue to some extent by using security groups, but then doesn't the group somewhat defeat the idea of de-perimiterization? In a smaller network, relying on groups seems reasonable, but I wonder how well it scales unless a hierarchy of groups is introduced, but then it's no longer de-perimiterized. This isn't my area of expertise and I'm just speculating. I tried to find some writings on this topic by people more knowledgeable than me, but haven't found anything relevant yet. I'll update this post if I do.</p>
<p>The three encryption-related bullet points, "encrypt data 'at-rest' in Amazon S3","encrypt data 'in-transit' (SSL)" and "consider encrypted EBS file systems for sensitive data," all bothered me. I don't necessarily feel safe just because something is encrypted, especially if the storage device it's encrypted on isn't under my control. As <a title="Security and encrypted hard drives" rel="nofollow" href="http://www.schneier.com/blog/archives/2009/10/evil_maid_attac.html">Bruce Schneier wrote very eloquently</a>, "As soon as you give up physical control of your computer, all bets are off." Always a good read, he further writes,</p>
<blockquote><p>In the meantime, people who encrypt their hard drives, or partitions on their hard drives, have to realize that the encryption gives them less protection than they probably believe. It protects against someone confiscating or stealing their computer and then trying to get at the data. It does not protect against an attacker who has access to your computer over a period of time during which you use it, too.</p></blockquote>
<p>Since Amazon's entire AWS infrastructure is basically a black box to us all, I'm skeptical that we should rely in any way on encryption for very sensitive data.</p>
<p><strong>Closing</strong></p>
<p>Overall, I really enjoyed the talk and wish the development points could have been discussed in much further detail.  It definitely gave me much to think about and highlighted topics for further reading. Hopefully, more meet-ups will be scheduled to delve into development issues for the cloud.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/network/cloud/a-loosely-coupled-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VLANs and NICs and Switches, Oh My</title>
		<link>http://www.geekontheloose.com/network/vlans-and-nics-and-switches-oh-my/</link>
		<comments>http://www.geekontheloose.com/network/vlans-and-nics-and-switches-oh-my/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 22:55:05 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=37</guid>
		<description><![CDATA[
I've been learning more than I ever wanted to know about the construction of VLANs for special purposes lately, i.e. maximize the performance of an application by working on one particular network bottleneck. By adding an additional nic card to the offending machines, putting those on their own VLAN, and routing particular applications through that [...]]]></description>
			<content:encoded><![CDATA[<p>
I've been learning more than I ever wanted to know about the construction of VLANs for special purposes lately, i.e. maximize the performance of an application by working on one particular network bottleneck. By adding an additional nic card to the offending machines, putting those on their own VLAN, and routing particular applications through that rather than the usual load balanced route, we were able to profoundly improve on some network congestion issues. It's just fascinating to watch the network traffic on the various VLANs at the switch between the various machines and see exactly how these little tweaks can really make a difference.</p>
<p>Definitely this is way out of my area of expertise, so I sometimes wonder why I'm being included in all of these discussions, but it's pretty fortunate that I am because it's been a great learning experience. I imagine that if all programmers had more visibility into the nuts and bolts of the network architecture they had to work with, they'd generally produce more secure, robust, better performing code. Most of the time, though, I think that's just not practical from a business operations point of view.</p>
<p>If someone had asked me, "hey, do you want to come to this meeting and discuss this blah, blah, blah network architecture stuff with us?", I probably would have rolled my eyes and said "yeah, right." I'm sure glad no one ever asked.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/network/vlans-and-nics-and-switches-oh-my/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
