<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6970266442002658284</id><updated>2011-12-12T16:57:16.717-05:00</updated><title type='text'>serna Deployments</title><subtitle type='html'>Chronicles the many, &lt;em&gt;many&lt;/em&gt; deployments that serna has to take part in.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-8766824975205224815</id><published>2009-03-22T02:44:00.000-04:00</published><updated>2009-03-22T02:45:34.625-04:00</updated><title type='text'>Deployment: March 21, 2009</title><content type='html'>This should have been a fairly typical deployment. We were putting in a new J2EE application, with a database change. The minor difference between this one and my normal deployments is that this wasn&amp;#8217;t an update, it was a brand new J2EE application; so if we screwed up, and it wasn&amp;#8217;t properly deployed on time, we wouldn&amp;#8217;t have to roll back to a previous version.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:00&amp;ndash;22:01&lt;/strong&gt; (1 minute): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:01&amp;ndash;23:33&lt;/strong&gt; (1 hour and 32 minutes): The DBA ran the database scripts. There were some errors, so this took a lot longer than expected, but she managed to work through the problems and get everything done.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:01&amp;ndash;22:34&lt;/strong&gt; (33 minutes): We configured the J2EE cluster (connection pools, security, etc.). We then had to wait for the database scripts to be finished, to move on to the next part of the deployment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;23:33&amp;ndash;02:30&lt;/strong&gt; (2 hours, 57 minutes): We deployed the J2EE application. Again, there were difficulties, which were hard to troubleshoot, because they had to do with some internal workings of our vendor&amp;#8217;s software, rather than our own code. We were getting errors between the vendor&amp;#8217;s software and their database objects. After troubleshooting as much as we could, we called it a night.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;22:00&amp;ndash;02:30&lt;/strong&gt; (4 hours and 30 minutes). We left the bridge knowing that there was a good chance we&amp;#8217;d need to rebuild the environment from scratch; it was quite possibly a configuration issue, but the likelihood of being able to track it down was slim. We tentatively planned to retry the next night, schedules (and permissions) pending.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-8766824975205224815?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/8766824975205224815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=8766824975205224815&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8766824975205224815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8766824975205224815'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2009/03/deployment-march-21-2009.html' title='Deployment: March 21, 2009'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-4541162616938760574</id><published>2009-03-22T00:32:00.001-04:00</published><updated>2009-03-22T00:32:50.999-04:00</updated><title type='text'>Sanity/Landing Tests Defined/Explained</title><content type='html'>I use the terms &lt;strong&gt;Sanity Test&lt;/strong&gt; and &lt;strong&gt;Landing Test&lt;/strong&gt; a lot, so I should define what &lt;em&gt;I&lt;/em&gt; mean by them&amp;mdash;others might use these terms in different ways, but this is how I and my team use them.&lt;br /&gt;&lt;br /&gt;When we&amp;#8217;re doing a deployment, there is the technical team, which is doing the actual work of the deployment, and troubleshooting any technical issues, and there are the business users, who want to make sure that the application meets their standards before they hand it over to the end users.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;Sanity Tests&lt;/strong&gt; are done by the technical team. Once we&amp;#8217;ve deployed the application, and everything is up and running, we quickly run through it to make sure that it really &lt;em&gt;is&lt;/em&gt; up and running. As the name implies, this really is just a quick sanity check, to make sure that everything is up; it&amp;#8217;s not meant to be exhaustive.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;Landing Tests&lt;/strong&gt; are done by the business users. Once the technical team has given the go ahead that the application is up and running (as verified by sanity testing), the business users go ahead and verify that the application is working according to their specifications. As with the sanity tests, landing tests are not meant to be exhaustive; the exhaustive testing should have been done long before the deployment! (We have a phase of testing called &lt;strong&gt;User Acceptance Testing&lt;/strong&gt;, or &lt;strong&gt;UAT&lt;/strong&gt;, which is where the exhaustive testing should have been done.) The purpose of the landing tests is for the business to ensure that everything is running, and that&amp;#8217;s it. If a bug is discovered, it must be one of two things:&lt;ol&gt;&lt;li&gt;An environmental issue, where the production environment is different than the other environments and it&amp;#8217;s causing a problem, or&lt;/li&gt;&lt;li&gt;A gap in the UAT, where something wasn&amp;#8217;t tested properly&lt;/li&gt;&lt;/ol&gt;We do our best to plan for the former. We get very annoyed by the latter, but to err is human.&lt;br /&gt;&lt;br /&gt;If either the sanity tests or the landing tests fail, we do our best to try and fix the problems right then and there, but that&amp;#8217;s not always possible&amp;mdash;especially at 2:00 in the morning. So when there are issues, it&amp;#8217;s up to the business to decide if these issues are &amp;#8220;show stoppers,&amp;#8221; meaning we have to abort the deployment and roll back to the previous version of the application, or whether the issues are minor enough that they can live with them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-4541162616938760574?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/4541162616938760574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=4541162616938760574&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/4541162616938760574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/4541162616938760574'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2009/03/sanitylanding-tests-definedexplained.html' title='Sanity/Landing Tests Defined/Explained'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-5572784660959248385</id><published>2009-03-19T02:27:00.001-04:00</published><updated>2009-03-19T02:27:39.574-04:00</updated><title type='text'>Deployment: March 19, 2009</title><content type='html'>Not a complex deployment, this time. A simple J2EE EAR file to be updated, with no database scripts to worry about or configuration changes to make.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:43&lt;/strong&gt; (13 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go. It took longer than it was supposed to; some people joined late.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:43&amp;ndash;02:02&lt;/strong&gt; (19 minutes): We un-deployed the old version of the EAR file, and deployed the new version.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:02&amp;ndash;02:08&lt;/strong&gt; (6 minutes): We did our Sanity Testing, and ensured that the app came back online successfully.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:08&amp;ndash;02:16&lt;/strong&gt; (8 minutes): We waited for the business to join the conference call, to do their Landing Tests; we were a bit ahead of schedule, so they hadn&amp;#8217;t been expecting to join the call this early.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:16&amp;ndash;02:25&lt;/strong&gt; (9 minutes): The client did their Landing Testing, and signed off that everything was working as it was supposed to.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;01:30&amp;ndash;02:25&lt;/strong&gt; (55 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-5572784660959248385?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/5572784660959248385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=5572784660959248385&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/5572784660959248385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/5572784660959248385'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2009/03/deployment-march-19-2009.html' title='Deployment: March 19, 2009'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3005977726596656775</id><published>2008-09-20T02:02:00.001-04:00</published><updated>2008-09-20T02:02:25.045-04:00</updated><title type='text'>[Mini] Deployment: September 20, 2008</title><content type='html'>This was actually just a simple database script, to update one of our data tables. No structural changes, just data.  But someone decided to treat it like a full deployment anyway, complete with the conference call and everything. So&amp;hellip;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:37&lt;/strong&gt; (7 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go. It took a bit longer than we&amp;#8217;d expected, because we weren&amp;#8217;t sure if one particular person was going to join or not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:37&amp;ndash;01:37&lt;/strong&gt; (about 30 seconds): We backed up the database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:37&amp;ndash;01:41&lt;/strong&gt; (4 minutes): We executed the DB scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:41&amp;ndash;01:48&lt;/strong&gt; (7 minutes): We did our Sanity Test&amp;mdash;mostly just checking the logs that the scripts worked fine, as well as a quick glance at the application, to verify that the data was showing up correctly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:43&amp;ndash;01:53&lt;/strong&gt; (10 minutes): The client performed their Landing Test.  (Further tests that the data was showing up correctly in the application&amp;hellip;) We let them start before the Sanity was done, in this case, since all indications were that things had worked fine, and we were just waiting on an email to show up in my Inbox to verify the scripts.&lt;br /&gt;&lt;br /&gt;Overall, we were done ahead of schedule, and everything worked well. Total deployment: &lt;strong&gt;01:30&amp;ndash;01:53&lt;/strong&gt; (23 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3005977726596656775?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3005977726596656775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3005977726596656775&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3005977726596656775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3005977726596656775'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/09/mini-deployment-september-20-2008.html' title='[Mini] Deployment: September 20, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-1500080494286500681</id><published>2008-09-11T05:28:00.001-04:00</published><updated>2008-09-11T05:28:47.509-04:00</updated><title type='text'>Deployment: September 11, 2008</title><content type='html'>This was a bug fix deployment, to fix the issue discovered with the previous deployment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:34&lt;/strong&gt; (4 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&amp;ndash;02:01&lt;/strong&gt; (27 minutes): We backed up the database, and executed the database scripts. This took longer than usual, because the DBA accidentally &lt;em&gt;ran the scripts on the wrong database&lt;/em&gt;, the first time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&amp;ndash;01:56&lt;/strong&gt; (22 minutes): We un-deployed the old version of the application, and shut down the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:06&amp;ndash;02:19&lt;/strong&gt; (13 minutes): We deployed the new version(s) of the application(s). (Some were actually still deployed from &lt;a href="http://sernadeployments.blogspot.com/2008/09/deployment-september-7-2008.html" target="_blank"&gt;the last time&lt;/a&gt;, and just had to be re-activated, while others&amp;mdash;the ones with bug fixes&amp;mdash;actually had to be redeployed.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:19&amp;ndash;03:04&lt;/strong&gt; (45 minutes): We conducted the Sanity Test. During Sanity, we discovered an issue unrelated to our deployment&amp;mdash;one that had been part of the application for the previous four months.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:00&amp;ndash;05:23&lt;/strong&gt; (2 hours and 23 minutes): The client did their Landing Tests. (This was overlapped with the Sanity Test a bit.) Some additional issues were discovered, but they were all deemed minor enough that we didn&amp;#8217;t need to back out. (The most serious one turned out to not be a bug with our application, but with a back-end system that we depend on. So the bug fix will be for them, not for us.)&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;01:30&amp;ndash;05:23&lt;/strong&gt; (3 hours and 53 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-1500080494286500681?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/1500080494286500681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=1500080494286500681&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1500080494286500681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1500080494286500681'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/09/deployment-september-11-2008.html' title='Deployment: September 11, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-9115198984427795392</id><published>2008-09-11T00:40:00.001-04:00</published><updated>2008-09-11T00:40:53.545-04:00</updated><title type='text'>Deployment: September 8, 2008</title><content type='html'>No timeline with this one.&lt;br /&gt;&lt;br /&gt;There had been an issue with the &lt;a href="http://sernadeployments.blogspot.com/2008/09/deployment-september-7-2008.html" target="_blank"&gt;previous deployment&lt;/a&gt;. Every once in a while, the CPU on the application servers was getting up close to 100%, and the Support Team had to reboot them to keep the application alive.&lt;br /&gt;&lt;br /&gt;Unfortunately, rolling back wasn&amp;#8217;t working; we tried un-deploying the application, and re-deploying the old version, but the new version seemed to be cached on the application servers.  So we had to call the application server vendor, and get help. (It turned out we had to undeploy, remove the temp directory, and then re-deploy the old version.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-9115198984427795392?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/9115198984427795392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=9115198984427795392&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/9115198984427795392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/9115198984427795392'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/09/deployment-september-8-2008.html' title='Deployment: September 8, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3591783835828597005</id><published>2008-09-07T06:42:00.001-04:00</published><updated>2008-09-07T06:42:29.131-04:00</updated><title type='text'>Deployment: September 7, 2008</title><content type='html'>This was a slightly more intricate deployment than usual, because there were a few moving parts. We had not one but two sets of database changes to go through, plus three separate applications to deploy and/or re-deploy on the application servers. Plus, because of our new &amp;#8220;global delivery model,&amp;#8221; we had a DBA in India who would be making our database changes, which was new. So I was hoping it wouldn&amp;#8217;t be a bad deployment, but I was a bit worried.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:00&lt;/strong&gt;: As I was getting ready for the deployment, I logged into my computer, and noticed an email from the DBA in India, dated twenty-four hours prior to the deployment, saying that he wasn&amp;#8217;t able to join the bridge, but would I please call his cell phone when we were ready for him to start. Not a good sign. I looked in the database, and found that the changes had &lt;em&gt;already been executed&lt;/em&gt; (presumably twenty-four hours earlier than they were supposed to be done). This could have been very bad, but we got lucky, and it turns out that the database changes didn&amp;#8217;t break the existing application; the old version of the app was able to run for the last twenty-four hours with the database changes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:50&lt;/strong&gt; (20 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go. This took &lt;em&gt;much&lt;/em&gt; longer than usual, because we had to confirm with the DBA what had actually been done, and what he hadn&amp;#8217;t. It turned out to be even more confusing than I&amp;#8217;d thought: out of the two DB changes we needed, one was partially done, and one was not done at all.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:50&amp;ndash;01:52&lt;/strong&gt; (2 minutes): We shut down the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:52&amp;ndash;02:21&lt;/strong&gt; (29 minutes): We had the DBA finish the database changes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:21&amp;ndash;02:24&lt;/strong&gt; (3 minutes): We brought back up the application servers&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:24&amp;ndash;02:42&lt;/strong&gt; (18 minutes): We deployed the updated and new applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:42&amp;ndash;05:00&lt;/strong&gt; (2 hours 18 minutes): We did our Sanity Testing. We found an issue with one piece of functionality, and determined that it might have been due to a back-end system, not ours. We spent some time troubleshooting it, and ended up not being sure which system was the culprit.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:40&amp;ndash;05:00&lt;/strong&gt; (1 hour 20 minutes): The client did their Landing Tests. This was overlapped with the troubleshooting we did, for the functionality that wasn&amp;#8217;t working.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;05:00&amp;ndash;05:30&lt;/strong&gt; (30 minutes): One of the back-end systems that we depend on went down for scheduled maintenance, and we had to wait for it to come back up before we could go back to our testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;05:30&amp;ndash;06:20&lt;/strong&gt; (50 minutes): We finished testing, and then called it a wrap. There was still an oustanding issue&amp;mdash;the one we weren&amp;#8217;t able to troubleshoot&amp;mdash;but it wasn&amp;#8217;t a show-stopper.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;01:30&amp;ndash;06:20&lt;/strong&gt; (4 hours and 50 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3591783835828597005?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3591783835828597005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3591783835828597005&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3591783835828597005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3591783835828597005'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/09/deployment-september-7-2008.html' title='Deployment: September 7, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3629859560767622037</id><published>2008-07-20T02:40:00.001-04:00</published><updated>2008-07-20T02:40:57.238-04:00</updated><title type='text'>Deployment: July 20, 2008</title><content type='html'>If all went well, this would be the last deployment for a long time. We were &lt;em&gt;pretty sure&lt;/em&gt; that we&amp;#8217;d fixed all of our issues, and this release was simply to &amp;#8220;turn on&amp;#8221; all of the functionality for all users&amp;mdash;now that it was working, we&amp;#8217;d let them &lt;em&gt;all&lt;/em&gt; use it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:35&lt;/strong&gt; (5 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:35&amp;ndash;01:44&lt;/strong&gt; (9 minutes): We deployed the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:44&amp;ndash;02:19&lt;/strong&gt; (35 minutes): We Sanity Tested the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:12&amp;ndash;02:31&lt;/strong&gt; (19 minutes): The users did their Landing Tests. This was overlapped a bit with the Sanity Testing, because the person doing Sanity had to reboot her computer halfway through the process. However, based on the nature of the changes&amp;mdash;i.e. that there &lt;em&gt;were no&lt;/em&gt; changes, just a configuration change&amp;mdash;we saw very little danger of Sanity failing, so we felt safe in letting the Landing Test start before Sanity was completely finished.&lt;br /&gt;&lt;br /&gt;Everything worked fine.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;01:30&amp;ndash;02:31&lt;/strong&gt; (1 hour and 1 minute).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3629859560767622037?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3629859560767622037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3629859560767622037&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3629859560767622037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3629859560767622037'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/07/deployment-july-20-2008.html' title='Deployment: July 20, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3843817706350671017</id><published>2008-07-11T02:04:00.001-04:00</published><updated>2008-07-11T02:04:42.271-04:00</updated><title type='text'>Deployment: July 11, 2008</title><content type='html'>This was sort of a continuation of the &lt;a href="http://sernadeployments.blogspot.com/2008/07/deployment-july-7-2008.html" target="_blank"&gt;previous deployment&lt;/a&gt;. If all went well, we&amp;#8217;d be able to kiss our recent troubles goodbye, and get back on to a regular schedule, without so many deployments all the time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:33&lt;/strong&gt; (3 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:33&amp;ndash;01:40&lt;/strong&gt; (7 minutes): We made some configuration changes to some of the servers. (There was no &amp;#8220;deployment&amp;#8221; this time, &lt;em&gt;per se&lt;/em&gt;, just configuration changes. But it still caused an outage, and so had to be controlled.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:40&amp;ndash;01:55&lt;/strong&gt; (15 minutes): We performed our Sanity Testing. Everything was fine. Normally Landing Tests would follow, but in this case, since there were no changes to the application itself, it wasn&amp;#8217;t deemed necessary.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:55&amp;ndash;01:58&lt;/strong&gt; (3 minutes): We verified with the user base that everything was back up and running.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;01:30&amp;ndash;01:58&lt;/strong&gt; (28 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3843817706350671017?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3843817706350671017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3843817706350671017&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3843817706350671017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3843817706350671017'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/07/deployment-july-11-2008.html' title='Deployment: July 11, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3041107362065549281</id><published>2008-07-08T00:00:00.000-04:00</published><updated>2008-07-08T00:01:03.933-04:00</updated><title type='text'>Deployment: July 7, 2008</title><content type='html'>This was partially a bug-fix deployment, but it was also a configuration deployment. We had a number of configuration changes to make to our web servers, in preparation for some future changes to our network/physical architecture.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:00&amp;ndash;22:01&lt;/strong&gt; (1 minute): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:01&amp;ndash;22:28&lt;/strong&gt; (27 minutes): We made the appropriate configuration changes to our web servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:08&amp;ndash;22:38&lt;/strong&gt; (10 minutes): We down-graded the logging level on our application servers. Because of the recent troubleshooting we&amp;#8217;d had to do, we&amp;#8217;d increased the logging greatly, but we now felt it was time to decrease it, and stop chewing up so much disk space with our logs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:38&amp;ndash;22:50&lt;/strong&gt; (12 minutes): We deployed the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:50&amp;ndash;23:11&lt;/strong&gt; (21 minutes): We performed our Sanity Testing. Everything was fine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;23:11&amp;ndash;23:18&lt;/strong&gt; (7 minutes): The users did their Landing Test. Everything was fine. (It&amp;#8217;s not usual that Sanity Test takes longer than Landing Test, but I guess the users had their testing down to a science, after so many deployments lately&amp;mdash;many of which I missed, since I was on vacation.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;23:18&amp;ndash;23:22&lt;/strong&gt; (4 minutes): We switched back on everything that had to be switched on, and verified with the user base was completely back up and running.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;23:22&amp;ndash;23:55&lt;/strong&gt; (33 minutes): Just as we had all signed off on the deployment, and were about to hang up, &lt;em&gt;one&lt;/em&gt; of the users &lt;em&gt;claimed&lt;/em&gt; that there was an issue. We spent this time re-testing the functionality, but there was no issue. (Error between keyboard and chair.)&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;22:00&amp;ndash;23:55&lt;/strong&gt; (1 hour and 55 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3041107362065549281?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3041107362065549281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3041107362065549281&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3041107362065549281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3041107362065549281'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/07/deployment-july-7-2008.html' title='Deployment: July 7, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-2017171540381968237</id><published>2008-06-04T00:07:00.001-04:00</published><updated>2008-06-04T00:07:10.846-04:00</updated><title type='text'>Deployment: June 3, 2008</title><content type='html'>Apparently the bug fix deployments spilled over out of May, and into June, because here I was doing another one. All preliminary thinking had this being another quick one, though.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:00&amp;ndash;22:06&lt;/strong&gt; (6 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:06&amp;ndash;22:57&lt;/strong&gt; (51 minutes): We deployed the application, and made some configuration changes required by the vendor of the application server software we use. (To help them debug a problem we&amp;#8217;re having.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:57&amp;ndash;23:23&lt;/strong&gt; (26 minutes): We Sanity Tested the application.  Everything was fine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;23:23&amp;ndash;00:05&lt;/strong&gt; (42 minutes): The users did their Landing Tests. Everything was still fine.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;22:00&amp;ndash;00:05&lt;/strong&gt; (2 hours and 5 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-2017171540381968237?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/2017171540381968237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=2017171540381968237&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2017171540381968237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2017171540381968237'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/06/deployment-june-3-2008.html' title='Deployment: June 3, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-1886485150431108949</id><published>2008-05-27T23:54:00.001-04:00</published><updated>2008-05-27T23:54:35.573-04:00</updated><title type='text'>Deployment: May 27, 2008</title><content type='html'>Yet another bug fix deployment. (This is why I&amp;#8217;d been telling people that May was going to suck&amp;mdash;deployments left right and centre, for bug fixes. There&amp;#8217;s a reason that you should never, ever, &lt;em&gt;ever&lt;/em&gt;, rewrite your code base from scratch. But ours is not to question why&amp;hellip;) Luckily, we could do this one without any kind of outage, so we got special permission to start sooner than usual: 10:00 PM, instead of 1:30 AM like usual.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:00&amp;ndash;22:05&lt;/strong&gt; (5 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:05&amp;ndash;22:47&lt;/strong&gt; (42 minutes): We deployed the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:47&amp;ndash;23:13&lt;/strong&gt; (26 minutes): We Sanity Tested the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;23:13&amp;ndash;22:50&lt;/strong&gt; (37 minutes): The users did their Landing Tests.&lt;br /&gt;&lt;br /&gt;Everything worked fine. There were some issues, but minor ones.&lt;br /&gt;&lt;br /&gt;Overall deployment: &lt;strong&gt;22:00&amp;ndash;22:50&lt;/strong&gt; (1 hour and 50 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-1886485150431108949?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/1886485150431108949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=1886485150431108949&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1886485150431108949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1886485150431108949'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/05/deployment-may-27-2008.html' title='Deployment: May 27, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-89424006913407957</id><published>2008-05-23T04:10:00.001-04:00</published><updated>2008-05-23T04:10:45.709-04:00</updated><title type='text'>Deployment: May 23, 2008</title><content type='html'>Another bug fix deployment. We weren&amp;#8217;t happy about it, because there were some big bugs that we knew still existed, but unfortunately we were having trouble reproducing some of the issues, so it was decided to deploy it into Production, and see if we could get some logs to help us diagnose the problem. That being said, we had fixed a whole bunch of other bugs, so it wasn&amp;#8217;t necessarily a complete waste of time. It just irked us, because we knew that we&amp;#8217;d be back in a couple of days, doing it again.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;0130&amp;ndash;01:34&lt;/strong&gt; (4 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&amp;ndash;01:36&lt;/strong&gt; (2 minutes): We shut down the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&amp;ndash;01:43&lt;/strong&gt; (9 minutes): We executed our database changes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:36&amp;ndash;01:40&lt;/strong&gt; (4 minutes): We made some configuration changes to our web servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:43&amp;ndash;01:55&lt;/strong&gt; (12 minutes): We brought the application servers back up, and deployed the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:55&amp;ndash;02:12&lt;/strong&gt; (17 minutes): We Sanity Tested the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:12&amp;ndash;04:06&lt;/strong&gt; (1 hour and 54 minutes): The users did their Landing Tests.&lt;br /&gt;&lt;br /&gt;Everything worked fine.  At least, everything that we expected to work fine worked fine&amp;mdash;we still had the issues that we were expecting to have.&lt;br /&gt;&lt;br /&gt;Overall deployment:  &lt;strong&gt;01:30&amp;ndash;04:06&lt;/strong&gt; (2 hours and 36 minutes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-89424006913407957?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/89424006913407957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=89424006913407957&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/89424006913407957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/89424006913407957'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/05/deployment-may-23-2008.html' title='Deployment: May 23, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-4213748503608176444</id><published>2008-05-16T03:39:00.001-04:00</published><updated>2008-05-16T03:39:36.558-04:00</updated><title type='text'>Deployment: May 16, 2008</title><content type='html'>This was a simple &amp;#8220;bug fix&amp;#8221; or &amp;#8220;service pack&amp;#8221; deployment, to fix some of the issues discovered during the &lt;a href="http://sernadeployments.blogspot.com/2008/05/deployment-may-11-2008.html" target="_blank"&gt;last deployment&lt;/a&gt;. Because there was no DBR this time, we expected the deployment to be quicker than usual, and because there was no new functionality, just bug fixes, we also expected the Landing Tests to be quicker than usual.&lt;br /&gt;&lt;br /&gt;Quite a number of steps in this deployment are overlapped with each other. We were doing a lot of things at once, and we had to get some log files while we did the deployment, to troubleshoot some issues that we&amp;#8217;d been having. This was nothing to do with the deployment itself, but we wanted to do it while we were there. (There were a lot of log files, so this step is overlapped with much of the rest of the deployment; the log files were &lt;a href="http://en.wikipedia.org/wiki/Gzip" target="_blank"&gt;gzipped&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Tar_%28file_format%29" target="_blank"&gt;tarred&lt;/a&gt; while everything else was going on.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:33&lt;/strong&gt; (3 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:33&amp;ndash;01:34&lt;/strong&gt; (1 minute): We performed a minor configuration change, to turn off the redirection functionality. (See the &lt;a href="http://sernadeployments.blogspot.com/2008/05/deployment-may-11-2008.html" target="_blank"&gt;last deployment&lt;/a&gt; for information on that.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&amp;ndash;02:40&lt;/strong&gt; (1 hour and 6 minutes): We gathered the log files from the production servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:42&amp;ndash;01:52&lt;/strong&gt; (10 minutes): We redeployed the old version of the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:52&amp;ndash;02:05&lt;/strong&gt; (13 minutes): We did our Sanity Testing of the old version of the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:52&amp;ndash;02:40&lt;/strong&gt; (48 minutes): We adjusted the logging level on the new version of the application. (This wouldn&amp;#8217;t normally take this long&amp;mdash;it&amp;#8217;s a simple configuration change&amp;mdash;but again, the person making the change was also busy tarring and gzipping the old log files at the same time. Also, we had to have some discussions about what settings to use.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:10&amp;ndash;02:15&lt;/strong&gt; (5 minutes): The users did their Landing Testing for the old application. (Everything was successful.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:52&amp;ndash;02:45&lt;/strong&gt; (53 minutes): We redeployed the new version of the application. (Again, this took longer than normal because of the overlapping steps above&amp;mdash;mostly the gathering of the log files.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:45&amp;ndash;03:07&lt;/strong&gt; (22 minutes): We did our Sanity Testing of the new version of the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:07&amp;ndash;03:21&lt;/strong&gt; (14 minutes): The users did their Landing Testing for the new version of the application. (Everything was successful.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-4213748503608176444?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/4213748503608176444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=4213748503608176444&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/4213748503608176444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/4213748503608176444'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/05/deployment-may-16-2008.html' title='Deployment: May 16, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-7453442135948799925</id><published>2008-05-11T07:14:00.001-04:00</published><updated>2008-05-11T07:14:18.801-04:00</updated><title type='text'>Deployment: May 11, 2008</title><content type='html'>This was our biggest deployment. Maybe not the most important&amp;mdash;release 1 would have qualified as the most important&amp;mdash;but with this release, we were taking our application and migrating it over to a completely new technology. That meant a new platform, new servers, new software&amp;hellip;  new &lt;em&gt;everything&lt;/em&gt;. It also meant lots of testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:00&amp;ndash;00:11&lt;/strong&gt; (11 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:11&amp;ndash;00:55&lt;/strong&gt; (44 minutes): We began the backup of our database, before executing the DB scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:11&amp;ndash;00:33&lt;/strong&gt; (22 minutes): Concurrently with the database backup, we began configuring our web servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:33&amp;ndash;01:00&lt;/strong&gt; (27 minutes): We began some configuration of our new application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:55&amp;ndash;01:30&lt;/strong&gt; (35 minutes): We executed the DB scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:50&lt;/strong&gt; (20 minutes): We deployed the application to the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:50&amp;ndash;02:20&lt;/strong&gt; (30 minutes): We did our Sanity Testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:20&amp;ndash;06:40&lt;/strong&gt; (4 hours and 20 minutes): The users performed Landing Testing. There were issues, but they were all deemed minor enough that we could leave the deployment in place.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;06:40&amp;ndash;07:10&lt;/strong&gt; (30 minutes): We turned on the first &amp;#8220;phase&amp;#8221; of users. For this rollout, since it was so big, we actually decided to roll the users out in &lt;strong&gt;phases&lt;/strong&gt;; it&amp;#8217;s a web-based application, and all users go through the old application, which decides what &amp;#8220;phase&amp;#8221; the user is supposed to be on; if the user is in a &amp;#8220;current&amp;#8221; phase, s/he gets redirected to the new application&amp;#8217;s URL. So we had to verify not only that the right users were on the right phase, but also that users on &amp;#8220;non active&amp;#8221; phases were still getting the old version of the application (i.e. that they were not getting redirected).&lt;br /&gt;&lt;br /&gt;All in all, the deployment went about as I&amp;#8217;d expected it to.  I knew that there would be a lot of testing to do, and I&amp;#8217;d expected us to find some issues&amp;mdash;you can&amp;#8217;t rewrite your entire code base in a new technology and not expect to find issues, even late in the game&amp;mdash;and I was relieved that none of the issues were deemed serious enough to roll back the deployment.&lt;br /&gt;&lt;br /&gt;At this point, we had to monitor the application, and see how it handled the load we were throwing at it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-7453442135948799925?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/7453442135948799925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=7453442135948799925&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/7453442135948799925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/7453442135948799925'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/05/deployment-may-11-2008.html' title='Deployment: May 11, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-2389523287433088930</id><published>2008-05-04T02:51:00.001-04:00</published><updated>2008-05-04T02:51:53.245-04:00</updated><title type='text'>Deployment: May 5, 2008</title><content type='html'>May is going to be a rough month&amp;mdash;I&amp;#8217;m doing deployments three out of four weekends this month. This one was sort of a preparatory deployment; the real functionality would be put into production the next week, but this one was getting ready for it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:33&lt;/strong&gt; (3 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:33&amp;ndash;01:34&lt;/strong&gt; (1 minute): We shut down the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&lt;/strong&gt;: We decided that we didn&amp;#8217;t need to back up the database, before executing the database scripts, since a back-out of the deployment wouldn&amp;#8217;t require backing out the database changes. (The scripts were only creating new objects, that could sit in the database unused in the event of a back-out, no modifications to existing objects were being made.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:34&amp;ndash;01:38&lt;/strong&gt; (4 minutes): We executed the database scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:35&amp;ndash;01:40&lt;/strong&gt; (5 minutes): I verified the output logs from the DB scripts, to verify that everything ran successfully.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:40&amp;ndash;01:43&lt;/strong&gt; (3 minutes): We restarted the application servers, and deployed one of the two applications we needed to deploy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:43&amp;ndash;01:44&lt;/strong&gt; (1 minute): We deployed the other application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:44&amp;ndash;02:26&lt;/strong&gt; (42 minutes): We did our Sanity Testing. We actually could have finished our Sanity Testing much earlier, but all of the people who needed to do Landing Tests were in their cars on their way to the office, and not ready to do their tests yet, so we just kept testing, until they got in.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:15&amp;ndash;02:36&lt;/strong&gt; (21 minutes): We did our Landing Tests. (This actually overlapped with the Sanity Test; the &lt;em&gt;main&lt;/em&gt; users who we needed didn&amp;#8217;t get into the office until after others did.  So we did &lt;em&gt;some&lt;/em&gt; Landing Tests, but the really &lt;em&gt;important&lt;/em&gt; tests didn&amp;#8217;t happen until later in this block of time.) Everything tested fine, which made the deployment a success.&lt;br /&gt;&lt;br /&gt;In the end, it actually turned out to be a good thing that the important testing was delayed.  It allowed us to get some of the minor testing&amp;mdash;which would have been the bulk of time spent&amp;mdash;out of the way, and we didn&amp;#8217;t have to waste extra time at the end of the deployment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-2389523287433088930?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/2389523287433088930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=2389523287433088930&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2389523287433088930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2389523287433088930'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/05/deployment-may-5-2008.html' title='Deployment: May 5, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-1703191282080336580</id><published>2008-03-16T05:56:00.001-04:00</published><updated>2008-03-16T05:56:42.067-04:00</updated><title type='text'>Deployment: March 16, 2008</title><content type='html'>This should have been a pretty normal deployment. We were introducing a new system, along with a re-deployment of the usual application I work on, and we weren&amp;#8217;t expecting it to take too long.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:30&amp;ndash;01:35&lt;/strong&gt; (5 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:35&amp;ndash;01:40&lt;/strong&gt; (5 minutes): We shut down the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:40&lt;/strong&gt;: We decided not to bother with a database backup, because even if we had to backout the deployment, we wouldn&amp;#8217;t be restoring the database, in this case, so we saved ourselves 30&amp;ndash;40 minutes by not backing it up. (This is normally a dangerous decision to make; however, the changes we were implementing in this case could have gone in standalone, so even if we backed out the application, we wanted the database changes to stay in.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:40&amp;ndash;02:00&lt;/strong&gt; (20 minutes): We executed our database scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:00&amp;ndash;02:10&lt;/strong&gt; (10 minutes): We restarted the application servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:10&amp;ndash;02:15&lt;/strong&gt; (5 minutes): We deployed the &amp;#8220;new&amp;#8221; application, and did a quick sanity test. The test worked, but we realized we had a minor configuration problem. (I&amp;#8217;d made a typo in the URL for a web service. Small mistakes can make for big problems&amp;hellip;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:15&amp;ndash;02:40&lt;/strong&gt; (25 minutes): We paged the person who could fix the problem, and waited for him to respond. (It took a while because his pager was on vibrate mode, and it took a few pages before it was able to wake him up. That&amp;#8217;s a common occurrence when you&amp;#8217;re trying to get hold of someone at 2:30 in the morning.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:40&amp;ndash;2:55&lt;/strong&gt; (15 minutes): The person logged on, and fixed our problem for us. Still slightly ahead of schedule, at this point.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;02:55&amp;ndash;03:20&lt;/strong&gt; (25 minutes): We had another configuration problem, and had to troubleshoot that. (Someone else had made &lt;em&gt;another&lt;/em&gt; typo! Apparently it was contagious.) This one required us to re-compile the application. (It was only a configuration change, but still required a re-build.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:20&amp;ndash;03:45&lt;/strong&gt; (25 minutes): I couldn&amp;#8217;t believe it, but we had yet &lt;em&gt;another&lt;/em&gt; problem. Our new Oracle package seemed to be having issues, even though it had compiled correctly in the database. (Apologies if you didn&amp;#8217;t understand that sentence; I couldn&amp;#8217;t muster up the motivation to type out a post explaining what an &amp;#8220;Oracle package&amp;#8221; is, when I wrote this.) We had to get the DBA back on the bridge, to help us fix it. By the time we&amp;#8217;d fixed this problem, we were 5 minutes behind schedule.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:45&amp;ndash;03:50&lt;/strong&gt; (5 minutes): We deployed the &amp;#8220;main&amp;#8221; application, which depends on the &amp;#8220;new&amp;#8221; application. This brought us back ahead of schedule (by 5 minutes).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:50&amp;ndash;04:05&lt;/strong&gt; (15 minutes): We performed our Sanity Testing. Still 5 minutes ahead of schedule.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;04:05&amp;ndash;05:30&lt;/strong&gt; (1 hour and 25 minutes): Landing tests were performed. At this point, I stopped paying attention to the schedule; Landing Tests &lt;em&gt;always&lt;/em&gt; go long, with this team. They do a &lt;em&gt;lot&lt;/em&gt; of testing. But since it&amp;#8217;s the last thing we do, before sign-off, it&amp;#8217;s not an issue if this part goes long. That being said, though, we were only about 10 minutes behind schedule, which is not too shabby.&lt;br /&gt;&lt;br /&gt;At the end of the day, we deployed with one minor bug. (Can we &lt;em&gt;never&lt;/em&gt; have a bug-free release?!?) However, it seemed to be a data integrity issue, and the only accounts that exhibited the behaviour are accounts that we&amp;#8217;ve used heavily in the past, for testing. So it&amp;#8217;s quite possible that we won&amp;#8217;t actually see the issue &amp;#8220;in the wild.&amp;#8221; (Famous last words&amp;hellip;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-1703191282080336580?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/1703191282080336580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=1703191282080336580&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1703191282080336580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1703191282080336580'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/03/deployment-march-16-2008.html' title='Deployment: March 16, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-1724132404402261266</id><published>2008-03-03T00:41:00.001-05:00</published><updated>2008-03-03T00:41:37.331-05:00</updated><title type='text'>Deployment: March 3, 2008</title><content type='html'>We had the conference call, regarding &lt;a href="http://sernadeployments.blogspot.com/2008/03/deployment-march-2-2008.html" target="_blank"&gt;the previous deployment&lt;/a&gt;, and it was decided that we were confident enough in the original database scripts to proceed with the deployment, at 20:00. We would be using a different DBA.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;20:00&lt;/strong&gt;: We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;20:00&amp;ndash;20:20&lt;/strong&gt; (20 minutes): We shut down the application servers for both apps.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;20:20&amp;ndash;20:30&lt;/strong&gt; (10 minutes): We backed up the back-end databases for both applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;20:30&amp;ndash;20:50&lt;/strong&gt; (20 minutes): We executed the database scripts for Application 1.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;20:50&amp;ndash;21:20&lt;/strong&gt; (30 minutes): We deployed Application 1.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;20:50&amp;ndash;21:25&lt;/strong&gt; (35 minutes): We executed the database scripts for Application 2, in parallel with the deployment of Application 1.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;21:20&amp;ndash;21:25&lt;/strong&gt; (5 minutes):  We did sanity testing of Application 1, which turned out fine. (Only 5 minutes because sanity testing for this particular application is pretty quick.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;21:25&amp;ndash;23:20&lt;/strong&gt; (1 hour and 55 minutes): The client did their Landing Test of Application 1, and everything looked good.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;21:30&amp;ndash;21:45&lt;/strong&gt; (15 minutes): We deployed Application 2.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;21:45&amp;ndash;22:00&lt;/strong&gt; (15 minutes): We did sanity testing of Application 2, and everything looked good.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22:00&amp;ndash;00:40&lt;/strong&gt; (2 hours and 40 minutes): The client did their Landing Test of Application 2. There were some minor issues discovered, but none were show-stoppers. They signed off on the deployment, and we all went to bed.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008.html" target="_blank"&gt;last time we&amp;#8217;d deployed this&lt;/a&gt;, one of the back-end systems we depend on went crazy, and &lt;a href="http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008_21.html" target="_blank"&gt;we had to back out&lt;/a&gt;. Many of us were thinking negative thoughts, worrying about having to do the same thing this time, as our heads hit our pillows&amp;hellip;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-1724132404402261266?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/1724132404402261266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=1724132404402261266&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1724132404402261266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1724132404402261266'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/03/deployment-march-3-2008.html' title='Deployment: March 3, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-2930958641576366804</id><published>2008-03-02T06:37:00.001-05:00</published><updated>2008-03-02T06:37:30.029-05:00</updated><title type='text'>Deployment: March 2, 2008</title><content type='html'>This was a retry of the &lt;a href="http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008.html" target="_blank"&gt;previous deployment&lt;/a&gt;, which was &lt;a href="http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008_21.html" target="_blank"&gt;backed out&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For clarity, I&amp;#8217;ve decided to start using military notation for the times, so that there&amp;#8217;s no confusion between, e.g., 12:00 midnight and 12:00 noon. (I&amp;#8217;m still rounding times to the nearest 5 minutes, though, for clarity.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:00&amp;ndash;00:10&lt;/strong&gt; (10 minutes): We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:10&amp;ndash;00:30&lt;/strong&gt; (20 minutes): We made some configuration changes to the Application 1 servers, and shut down the application servers for both Application 1 and Application 2.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;00:30&amp;ndash;01:45&lt;/strong&gt; (1 hour and 15 minutes): We backed up the databases, just in case. This took longer than usual, because the DBA had to back up one of the databases to his own machine, instead of doing it on the server. (It&amp;#8217;s normally done directly on the server, which avoids the backup having to travel across the network, but he didn&amp;#8217;t plan ahead to get the Unix passwords for the &lt;a href="http://catb.org/esr/jargon/html/B/boxen.html" target="_blank"&gt;boxen&lt;/a&gt; in question.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;01:25&amp;ndash;03:20&lt;/strong&gt; (2 hours and 55 minutes): We made the modifications to the database for Application 1. (This overlapped with the task above, as the database for Application 2 continued to be backed up.) Again, this took much longer than it should have&amp;mdash;it took just under an hour and a half, last time&amp;mdash;because the DBA had to run the scripts over the network, instead of from the server.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:20&amp;ndash;03:25&lt;/strong&gt; (5 minutes): There were issues with the database scripts, for Application 1. It turns out that the DBA modified the scripts, without telling anyone, before running them, but the modified scripts ran into issues. Because we were not confident that the database was left in a valid state, it was decided to roll back, and restore the database from the backup.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;03:20&amp;ndash;04:30&lt;/strong&gt; (1 hour and 10 minutes): During this time, the team had a roundtable conversation to discuss whether we could still put in Application 2, even though Application 1 was rolled back. The problem is that the new version of Application 1 had never been &lt;em&gt;tested&lt;/em&gt; against the old version of Application 1. It was decided that the risk was low&amp;mdash;the nature of the changes being made indicated that the different versions of the applications should work together&amp;mdash;but risk is risk, and if they weren&amp;#8217;t tested, there could be a chance of errors being undiscovered. It was finally decided to leave both applications as-is&amp;mdash;that is, &lt;em&gt;not&lt;/em&gt; try to deploy Application 2 without Application 1&amp;mdash;and revisit the deployment in a day or two.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;04:30&amp;ndash;05:10&lt;/strong&gt; (40 minutes): We brought the applications back up. Luckily, based on the nature of the database changes for Application 1, it was decided that we didn&amp;#8217;t need to restore the database; all we had to do was undo some configuration changes, on the application servers, and then bring those servers back online.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;04:40&amp;ndash;04:50&lt;/strong&gt; (10 minutes): The business came onto the bridge, and said that they&amp;#8217;d prefer to try the deployment again, rather than roll back. Just to be safe, it was decided to continue with the rollback, and do a quick sanity test, so that there would be some version of the application online, while the decision was made. We also needed to chase the DBA team, and find a new DBA to perform the work.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;05:10&amp;ndash;05:20&lt;/strong&gt; (10 minutes): We all did a sanity/regression test, to verify that the applications were back up and running. They were fine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;05:20&amp;ndash;05:30&lt;/strong&gt; (10 minutes): Dead air, as we waited for the DBA team to get back to us.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;05:30&amp;ndash;06:30&lt;/strong&gt; (1 hour): Another DBA joined the conference call, and was walked through the existing dilemma. He asked for some time to look over the situation&amp;mdash;including what was changed, and why. Presumably, the results of his investigation would give the rest of us the warm and fuzzy that we can proceed to try again.&lt;br /&gt;&lt;br /&gt;The result of this discussion was that the DBA(s) would try to recreate the errors we got, to prove that it was the modified scripts that caused the problems. We would reconvene at noon, to go over the findings, and talk about rescheduling the deployment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-2930958641576366804?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/2930958641576366804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=2930958641576366804&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2930958641576366804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2930958641576366804'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/03/deployment-march-2-2008.html' title='Deployment: March 2, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-8800233161532271752</id><published>2008-02-21T16:30:00.001-05:00</published><updated>2008-02-21T16:30:27.446-05:00</updated><title type='text'>Deployment: February 21, 2008—Backout!</title><content type='html'>After a [mostly] successful deployment, some of the back-end systems that we depend on went crazy.  The system was down for most of the morning. It was decided to roll back everything that went in during the night. (That included not just our application, but numerous other applications that had also deployed.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:00 (noon)&amp;ndash;12:30&lt;/strong&gt; (30 minutes): We opened the bridge, and waited for people to join. Since this was an ad-hoc bridge, being opened at the last minute, it took longer than usual to round everyone up, and get them on the bridge. (Some of them may still have been sleeping, since we were exactly twelve hours after the original deployment.) Unfortunately, we weren&amp;#8217;t able to get the DBA who had done the original deployment, but we had two other DBAs helping us.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:30&amp;ndash;12:45&lt;/strong&gt; (15 minutes): We shut down the application servers for both applications, and rolled back some of the configuration changes necessary for Application 1. (&lt;a href="http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008.html" target="_blank"&gt;See the description of the original deployment&lt;/a&gt;, for what we were deploying, and a  mention of &amp;#8220;Application 1&amp;#8221; vs. &amp;#8220;Application 2.&amp;#8221;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:45&lt;/strong&gt;: At the last minute, the DBA who had done our original deployment showed up. This gave me a sense of relief, because it&amp;#8217;s always easier for someone to back out her own work than for someone else to do it&amp;mdash;even with good, detailed instructions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:45&amp;ndash;1:20&lt;/strong&gt; (35 minutes): The DBAs rolled back the database changes. This is why the backups taken during the deployment were so crucial; they simply deleted the appropriate schemas, and re-imported the dump file taken during the backup. The DBA who had done our original deployment restored one of the databases, and, to shorten the outage time, another of the DBAs restored the other one. (All this time, the application was down, and users were unable to access it, so every second mattered.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:20&amp;ndash;1:45&lt;/strong&gt; (25 minutes): The old version of Application 1 was re-deployed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:45&amp;ndash;3:00&lt;/strong&gt; (1 hour and 15 minutes): Sanity Testing commenced for Application 1, and failed; the application didn&amp;#8217;t come up correctly. It was believed to be a problem with the deployment procedure, so it was un-deployed, and re-deployed again. Unfortunately, the problem still remained. It was eventually determined that the application &lt;em&gt;was&lt;/em&gt; deployed successfully, but we had a problem with a tool called &lt;strong&gt;Java Web Start&lt;/strong&gt;&amp;mdash;the Admin Tool for the application uses Java Web Start, and because we were using a new version of the Admin Tool, JWS didn&amp;#8217;t re-download the old version.&lt;br /&gt;&lt;br /&gt;As of 3:00, we were rolled back to our previous state&amp;mdash;with no idea when we would next be attempting the deployment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-8800233161532271752?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/8800233161532271752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=8800233161532271752&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8800233161532271752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8800233161532271752'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008_21.html' title='Deployment: February 21, 2008&amp;mdash;Backout!'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-206647314051485314</id><published>2008-02-21T05:48:00.001-05:00</published><updated>2008-02-21T05:48:19.673-05:00</updated><title type='text'>Deployment: February 21, 2008</title><content type='html'>This was a problematic deployment before we even got started. First of all, it was a full moon&amp;mdash;and not just any full moon, &lt;a href="http://www.thestar.com/News/GTA/article/305129" target="_blank"&gt;a blood-red full moon&lt;/a&gt;. (Isn&amp;#8217;t it a bad omen to be doing a deployment when the moon is turning to blood?)&lt;br /&gt;&lt;br /&gt;But that wasn&amp;#8217;t what I was referring to. It was a problematic deployment because we were dependent on three separate systems, for the deployment, and two of those systems were themselves dependent on a number of &lt;em&gt;other&lt;/em&gt; systems being deployed.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.flickr.com/photos/sernaferna/2281209692/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2128/2281209692_f5bd71dc51.jpg" width="344" height="500" alt="feb 2008" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;There was a lot of confusion about which system had to be deployed before which other system, or which systems had to be installed on the same night, etc. Unfortunately, one of the systems&amp;mdash;one of the ones that were two or three removed from &lt;em&gt;my&lt;/em&gt; system&amp;mdash;had issues, so they weren&amp;#8217;t going to be able to deploy before us. It was decided that we could deploy anyway, though; our system would be able to gracefully handle the missing back-end system, simply displaying an error message at the appropriate spot, and when they were able to deploy the other system, our system would just magically start working. (Unfortunately, it meant that I&amp;#8217;d still have to take part in the other deployment, to do some testing, which means that I&amp;#8217;d have another sleepless night coming up.)&lt;br /&gt;&lt;br /&gt;Also, we ourselves were deploying not one, but two applications.  I&amp;#8217;ll call them Application 1 and Application 2.&lt;br /&gt;&lt;br /&gt;Once we finally got to the point where we were ready to deploy, here&amp;#8217;s how it went down.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:00 midnight&lt;/strong&gt;: We all logged onto the conference bridge, and confirmed that we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:05&amp;ndash;12:10&lt;/strong&gt; (5 minutes): We shut down the application servers for both Application 1 and Application 2. To save time, we also made some necessary configuration changes, during this time, for Application 1. (It was a last-minute change to the procedure; we realized that if we&amp;#8217;d waited until it was scheduled, it would have meant an extra reboot in the process. As much planning as you try to do ahead of time, you just can&amp;#8217;t control when you&amp;#8217;ll have a good idea.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:10&amp;ndash;12:30&lt;/strong&gt; (20 minutes): We backed up the back-end databases that we depend on. Since we had to make some changes to the schemas, it&amp;#8217;s always a good idea to back them up, first, in case you have to rollback the deployment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:25&amp;ndash;1:50&lt;/strong&gt; (1 hour 25 minutes): We made the appropriate modifications to the database for Application 1. (The backup of this database finished before the other one, which is why this step starts before the end of the previous step.) Unfortunately, while the database scripts were executing, the database ran out of space in the &amp;#8220;temp&amp;#8221; tablespace. So the DBA had to page someone who does more low-level support of the database, to get the issue resolved, before the script could be run.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:30&amp;ndash;12:50&lt;/strong&gt; (20 minutes): We made the modifications to the database for Application 2. Again, you&amp;#8217;ll notice that this step overlaps with the previous one; because the first change involved a long-running DB script, the DBA was able to make the modifications on the second database, while she waited for the long-running script to finish. There were a number of things happening at the same time, but I trusted the DBA to know how much she could do at once, and how much had to be done sequentially.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:50&amp;ndash;2:10&lt;/strong&gt; (20 minutes): We brought back one of the application servers for Application 1, and deployed the new version of the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:10&amp;ndash;2:20&lt;/strong&gt; (10 minutes): One more reboot, to be safe, after the deployment of Application 1.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:20&amp;ndash;2:25&lt;/strong&gt; (5 minutes): We did our Sanity Test of Application 1, and everything looked good.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:25&amp;ndash;2:35&lt;/strong&gt; (10 minutes): We brought back up the application servers for Application 2, and deployed the new version of the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:35&amp;ndash;3:10&lt;/strong&gt; (35 minutes): We did our first round of Sanity Tests for Application 2. Unfortunately, one of the back-end systems&amp;mdash;one of the ones that was &lt;em&gt;supposed&lt;/em&gt; to be up and running&amp;mdash;was down, because of some emergency maintenance. (Replacement of a network card, or something.)  Nobody bothered to inform us that this was happening, so we were taken by surprise, when we ran our test and it didn&amp;#8217;t work. It was decided to Sanity Test as much as we could, ignoring that part of the application, and then do the Landing Tests (still ignoring that part of the application.)  When it came back up, we&amp;#8217;d revisit Sanity Testing, to verify the functionality.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3:10&amp;ndash;5:30&lt;/strong&gt; (2 hours and 20 minutes): We did our Landing Testing, for the business to verify that the functionality is up and running. Because of the back-end system&amp;#8217;s outage, they ended up Landing Testing some functionality before the Sanity Test was done. Issues discovered:&lt;ul&gt;&lt;li&gt;Character encoding issues with one back-end system that we connect to; French characters were not showing up properly in the UI.&lt;/li&gt;&lt;li&gt;A web app that we link to was down, during the deployment. (Not a big deal.)&lt;/li&gt;&lt;li&gt;We deployed the wrong version of Application 1, and had to re-deploy it. When it was redeployed, it was fine.&lt;/li&gt;&lt;/ul&gt;At the end of the day, we were only left with the issue regarding French characters. It was decided that the application could be left in production as-is, and we&amp;#8217;d have to look into a fix later on, when we could look more closely at it. (It seems to be related to character encoding issues with some XML being sent between applications. If you&amp;#8217;re interested in character encoding issues in XML, I can recommend &lt;a href="http://ca.wiley.com/WileyCDA/WileyTitle/productCd-0470114878.html" target="_blank"&gt;a great book&lt;/a&gt;, with some very handsome faces on the cover&amp;hellip;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-206647314051485314?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/206647314051485314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=206647314051485314&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/206647314051485314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/206647314051485314'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2008/02/deployment-february-21-2008.html' title='Deployment: February 21, 2008'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2128/2281209692_f5bd71dc51_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-186208480624793196</id><published>2007-12-23T02:07:00.001-05:00</published><updated>2007-12-23T02:07:32.212-05:00</updated><title type='text'>Deployment: December 23, 2007</title><content type='html'>The &lt;a href="http://sernadeployments.blogspot.com/2007/12/deployment-december-2-2007.html" target="_blank"&gt;last deployment&lt;/a&gt; was a success. Well&amp;hellip;  sort of. We added in some new functionality which was pulling additional information from a back-end system. Unfortunately, that system wasn&amp;#8217;t able to handle the extra load. And, because of the Christmas season, all of the systems were being taxed more heavily than usual, so there was a danger that this extra load would be enough to start causing crashes.&lt;br /&gt;&lt;br /&gt;So it was decided to do an &amp;#8220;emergency deployment,&amp;#8221; and remove the functionality. The back-end system would be going through a change, the month after, which would make it able to handle this load, so the next version of my app would have the functionality reinstated.&lt;br /&gt;&lt;br /&gt;It sucks that we had to do a deployment on the weekend before Christmas&amp;mdash;when I was supposed to be on holidays&amp;mdash;but that&amp;#8217;s the way it goes, sometimes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:30AM&lt;/strong&gt;:  We all logged onto the conference bridge, and confirmed we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:35&amp;ndash;1:40&lt;/strong&gt;: There were no database changes, this time around, so all we had to do was redeploy the application itself. We did so.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:40&amp;ndash;1:50&lt;/strong&gt;: The application was back up, and we did a quick Sanity Test, to ensure it was working. The Sanity Tests passed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:50&amp;ndash;2:05&lt;/strong&gt;: The client did their Landing Tests. Again, the tests passed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-186208480624793196?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/186208480624793196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=186208480624793196&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/186208480624793196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/186208480624793196'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/12/deployment-december-23-2007.html' title='Deployment: December 23, 2007'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-1586379529580542493</id><published>2007-12-02T22:41:00.001-05:00</published><updated>2007-12-02T22:41:56.590-05:00</updated><title type='text'>Deployment: December 2, 2007</title><content type='html'>Finally. We &lt;em&gt;finally&lt;/em&gt; got this thing deployed. After all of the false starts and number of times the release was deferred, it seems anti-climactic to have such a short post for this release, but the fact is, when we finally got a chance to deploy this thing, it went without a hitch.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:30AM&lt;/strong&gt;:  We all logged onto the conference bridge, and confirmed we were ready to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:35&lt;/strong&gt;: We shut down the two applications that we had to deploy, for this release&amp;mdash;the &amp;#8220;front-end&amp;#8221; app and the &amp;#8220;back-end&amp;#8221; app.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:40&lt;/strong&gt;: We backed up the database for the front-end app, and began the deployment of the back-end app. I can&amp;#8217;t stress enough the importance of having a good, solid &lt;strong&gt;deployment plan&lt;/strong&gt;, so that you can execute tasks in parallel like this, and not worry about losing track of who&amp;#8217;s doing what!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:45&lt;/strong&gt;: The backup finished for the database, so our Database Analyst (DBA) began executing the new database scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:45&lt;/strong&gt;: As the DBA executed the DB scripts, the back-end app was taking a bit longer than expected to come back up.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:50&lt;/strong&gt;: The back-end app came back up, and the DBA finished executing the scripts. We did our Sanity Test for the back-end app.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:00&lt;/strong&gt;: Sanity tests for the back-end app passed. We now began the deployment of the front-end app. (Because it depends on the back-end app, we had to ensure that the back-end app was up and running properly, before bothering to deploy the new version of the front-end app.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:05&lt;/strong&gt;: The front-end app finished deploying, and we began our Sanity testing. At this point, we were about an hour ahead of schedule.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:20&lt;/strong&gt;: Sanity testing finished. We now got the clients to begin their Landing tests. We actually had to &lt;em&gt;call&lt;/em&gt; some people, and get them to join the bridge early, since we were still ahead of schedule.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:20&amp;ndash;5:00&lt;/strong&gt;: We performed Landing tests. We turned up two defects, but they were deemed minor enough that we could leave the release in, until a fix could be found.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-1586379529580542493?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/1586379529580542493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=1586379529580542493&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1586379529580542493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1586379529580542493'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/12/deployment-december-2-2007.html' title='Deployment: December 2, 2007'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-8749471223838134516</id><published>2007-12-01T15:07:00.001-05:00</published><updated>2007-12-01T15:07:25.092-05:00</updated><title type='text'>Deployment: December 1, 2007</title><content type='html'>The investigations into the back-end system have completed, and they believe the problems were caused by a problem with the &lt;a href="http://sernadeployments.blogspot.com/2007/12/balancer-definedexplained.html" target="_blank"&gt;hardware load balancer&lt;/a&gt;, for the back-end system. They&amp;#8217;re making the change on the morning of December 1&lt;sup&gt;st&lt;/sup&gt;, which means that we&amp;#8217;re being deferred yet again.&lt;br /&gt;&lt;br /&gt;Assuming that all goes well with the changes to the load balancer, we&amp;#8217;ll go in Saturday night/Sunday morning, meaning December 2&lt;sup&gt;nd&lt;/sup&gt;. We&amp;#8217;ll have a go/no-go call at 5:00 PM Saturday afternoon, to make the decision.&lt;br /&gt;&lt;br /&gt;And just to make everything even &lt;em&gt;more&lt;/em&gt; fun, the email servers were down all day Friday, so updates couldn&amp;#8217;t be sent via email. We were all waiting around to see what would happen, but nobody was able to send updates.&lt;br /&gt;&lt;br /&gt;I&amp;#8217;m almost afraid to ask what else can go wrong with this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-8749471223838134516?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/8749471223838134516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=8749471223838134516&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8749471223838134516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8749471223838134516'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/12/deployment-december-1-2007.html' title='Deployment: December 1, 2007'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-7206161199540202032</id><published>2007-12-01T15:04:00.001-05:00</published><updated>2007-12-01T15:04:46.987-05:00</updated><title type='text'>“Load Balancer” Defined/Explained</title><content type='html'>For high-availability systems, we usually want to &lt;strong&gt;cluster&lt;/strong&gt; our servers. That is, instead of having one, very powerful server, we might want to split the processing between two or more servers. Requests can be processed by any of the servers in the cluster. This way, if any of the servers crashes, the other servers can handle the load, until the broken server is fixed.&lt;br /&gt;&lt;br /&gt;However, most client applications can&amp;#8217;t deal with a cluster; they need one place to go to, to get requests processed. So in order to enable clustering, there usually needs to be a &lt;strong&gt;load balancer&lt;/strong&gt; put in place. The client applications only know the address/location of the load balancer, and the load balancer takes care of forwarding those requests to the servers in the cluster.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.flickr.com/photos/sernaferna/2078901840/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2040/2078901840_916cbe1b96_m.jpg" width="240" height="233" alt="Load Balancer" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Depending on your needs, you may use a &lt;strong&gt;software load balancer&lt;/strong&gt;, or a &lt;strong&gt;hardware load balancer&lt;/strong&gt;. A software load balancer is simply a program running on an existing server, whereas a hardware load balancer is a dedicated networking device, which does nothing but balance traffic between different servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-7206161199540202032?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/7206161199540202032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=7206161199540202032&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/7206161199540202032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/7206161199540202032'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/12/balancer-definedexplained.html' title='&amp;#8220;Load Balancer&amp;#8221; Defined/Explained'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2040/2078901840_916cbe1b96_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-7462348521130192429</id><published>2007-12-01T14:37:00.001-05:00</published><updated>2007-12-01T14:37:46.699-05:00</updated><title type='text'>Deployment: November 30, 2007</title><content type='html'>The investigations into the back-end system&amp;#8217;s crash were inconclusive. Still a no-go for our deployment. Again, maybe it&amp;#8217;ll happen Friday night/Saturday morning, but otherwise, it&amp;#8217;ll be Saturday night/Sunday morning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-7462348521130192429?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/7462348521130192429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=7462348521130192429&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/7462348521130192429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/7462348521130192429'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/12/deployment-november-30-2007.html' title='Deployment: November 30, 2007'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-8615551871213883209</id><published>2007-12-01T14:35:00.000-05:00</published><updated>2007-12-01T14:36:29.853-05:00</updated><title type='text'>Deployment: November 29, 2007</title><content type='html'>The back-end system were were depending on deployed successfully on Tuesday morning, so we were scheduled to go in Wednesday night/Thursday morning. Everything was set, and we&amp;#8217;d had all of our go/no-go meetings.&lt;br /&gt;&lt;br /&gt;Unfortunately, the same back-end system crashed Wednesday afternoon.  We had to cancel, pending investigation into what caused the crash.&lt;br /&gt;&lt;br /&gt;Assuming that all went well, we&amp;#8217;d go in the next day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-8615551871213883209?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/8615551871213883209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=8615551871213883209&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8615551871213883209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/8615551871213883209'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/12/deployment-november-29-2007.html' title='Deployment: November 29, 2007'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-2157385936789296226</id><published>2007-11-23T13:30:00.000-05:00</published><updated>2007-11-23T13:31:06.173-05:00</updated><title type='text'>“Source Code Repository” Defined/Explained</title><content type='html'>When developing software, the &lt;strong&gt;source code&lt;/strong&gt; is your most valuable asset. A &lt;strong&gt;Source Code Repository&lt;/strong&gt; is a special database where the source code is stored.&lt;br /&gt;&lt;br /&gt;Source Code Repositories&amp;mdash;also called &lt;strong&gt;version control software&lt;/strong&gt;&amp;mdash;usually have the following types of features:&lt;ul&gt;&lt;li&gt;The ability to &lt;strong&gt;check out&lt;/strong&gt; and &lt;strong&gt;check in&lt;/strong&gt; code. When you check code out, it means that you&amp;#8217;re locking that piece of code, so that other developers know not to work on it (or can&amp;#8217;t work on it) until you&amp;#8217;re done. When you&amp;#8217;re finished with it, you check it back in. (Sometimes repositories are set to allow multiple people to check a file out at the same time; in this case, the changes have to be merged together, as explained in the bullet below.)&lt;/li&gt;&lt;li&gt;The ability to &lt;strong&gt;compare&lt;/strong&gt; different versions of a file, and &lt;strong&gt;merge&lt;/strong&gt; versions together. Comparing allows you to see what has changed, between the code you have on your computer and the code that&amp;#8217;s checked into the repository. Merging allows you to take changes from multiple versions of a file, and combine them all together into one final version of the file.&lt;/li&gt;&lt;li&gt;The ability to &lt;strong&gt;label&lt;/strong&gt; a particular version of the code. (Different repository products have different naming conventions for this; they don&amp;#8217;t all call it a &amp;#8220;label&amp;#8221;.) Normally, the software you&amp;#8217;re developing will go through multiple iterations; you&amp;#8217;ll have version 1.0 of the software, and then 1.1, or maybe 2.0, etc.  With each version of the software the code base changes. However, if you label your code, from time to time, you can always go back and get the code as it was at any particular point in time.  e.g. &amp;#8220;get me the code as it was when I labelled it &amp;#8216;1.0&amp;#8217;.&amp;#8221;&lt;/li&gt;&lt;/ul&gt;There are a number of vendors who provide source code repositories. Some of the ones you&amp;#8217;ll see most commonly are &lt;strong&gt;CVS&lt;/strong&gt;, &lt;strong&gt;Subversion&lt;/strong&gt; (&lt;strong&gt;SVN&lt;/strong&gt;), and, in the Microsoft world, &lt;strong&gt;Visual SourceSafe&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-2157385936789296226?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/2157385936789296226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=2157385936789296226&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2157385936789296226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2157385936789296226'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/11/code-repository-definedexplained.html' title='&amp;#8220;Source Code Repository&amp;#8221; Defined/Explained'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-1908275075182978809</id><published>2007-11-23T09:49:00.001-05:00</published><updated>2007-11-23T09:49:57.065-05:00</updated><title type='text'>Deployment: November 2007 (almost)</title><content type='html'>This was going to be an unusual deployment, because it was scheduled for a Wednesday night, instead of a Saturday night. This worried me, because I was worried about having to work on Thursday, &lt;em&gt;and&lt;/em&gt; I was coming down with a cold.&lt;br /&gt;&lt;br /&gt;It was also going to be a long deployment; there is another system we depend on, that had to deploy along with us, but their deployments are much longer than ours. So we would have had to shut down our system, and then wait for a couple of hours, until they were done, and then continued on with ours.&lt;br /&gt;&lt;br /&gt;As luck would have it, though, their deployment was deferred. Their source code repository crashed, and they spent days trying to recover from it.  So we&amp;#8217;re rescheduling for this coming week. And the good news keeps getting better: we&amp;#8217;re hoping to deploy the other application on Monday night, and my application on Wednesday night&amp;mdash;so we won&amp;#8217;t have such a long deployment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-1908275075182978809?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/1908275075182978809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=1908275075182978809&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1908275075182978809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/1908275075182978809'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/11/deployment-november-2007-almost.html' title='Deployment: November 2007 (almost)'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-6865462584550518731</id><published>2007-09-24T09:30:00.001-04:00</published><updated>2007-09-24T09:30:18.020-04:00</updated><title type='text'>Deployment: September 2007 (Take Two)</title><content type='html'>This was a second attempt on &lt;a href="http://sernadeployments.blogspot.com/2007/09/deployment-september-2007.html" target="_blank"&gt;the deployment written about earlier&lt;/a&gt;. Since we were convinced we&amp;#8217;d fixed the problems discovered during the first deployment, we decided to tackle this attempt exactly the same way.&lt;br /&gt;&lt;br /&gt;Of course, there was one major difference, this time: I decided to take this one from home. On the previous attempt, they&amp;#8217;d shut down the power in the building, &lt;em&gt;forcing&lt;/em&gt; me to come home; this time, they were going to shut down the phones and the network. But luckily, I knew ahead of time, this time, so I was able to plan ahead to come home, instead of being forced halfway through.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10:00PM&lt;/strong&gt;: We&amp;#8217;re scheduled to start at 10:00PM, but there&amp;#8217;s an accident on the 401, which prevents me from getting home in time for the beginning of the deployment. Luckily, I really only have to log on for a couple of minutes, verify that everything is going smoothly, and then log back off until midnight. So I log onto the conference bridge from my car, on my cell. The &amp;#8220;database split team&amp;#8221; begins their work&amp;mdash;at this point, they&amp;#8217;re backing up the database, in case of rollback&amp;mdash;and I log back off again. I have just walked into my house, at this point.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10:00&amp;ndash;12:00&lt;/strong&gt;:  I start watching another movie, to kill the time. &lt;em&gt;The Spy Who Loved Me&lt;/em&gt;, this time. (Still on my 007 kick.) I also make some tapioca pudding, since I&amp;#8217;m home, and spend some time preparing my &amp;#8220;work environment&amp;#8221;&amp;mdash;setting up a phone with a long cable (since I don&amp;#8217;t know how long my cordless phone batteries will last), getting a couple of cordless phones handy (since I don&amp;#8217;t &lt;em&gt;like&lt;/em&gt; my &amp;#8220;corded&amp;#8221; phone), and preparing some things to drink.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:00AM&lt;/strong&gt;: I log back on. The backup was completed successfully. We shut down the Application Servers for &amp;#8220;Application 1&amp;#8221;, so that they can proceed with the database split. And then I log back off the bridge, since there won&amp;#8217;t be any further activity until 12:45. (For a reminder of what &amp;#8220;Application 1&amp;#8221; and &amp;#8220;Application 2&amp;#8221; are, see &lt;a href="http://sernadeployments.blogspot.com/2007/09/deployment-september-2007.html" target="_blank"&gt;the post from the first attempt&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:05&amp;ndash;12:45&lt;/strong&gt;: More movie.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:45&lt;/strong&gt;: I log back onto the bridge.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:45&amp;ndash;12:55&lt;/strong&gt;: We sit around on the bridge, wondering where in the world everyone is. We then decide to proceed without them, for the time being&amp;mdash;the clock is ticking, after all.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:55&lt;/strong&gt;: We shut down the App Servers for &amp;#8220;Application 2&amp;#8221;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:00&amp;ndash;1:01&lt;/strong&gt;: We back up the database, for &amp;#8220;Application 2&amp;#8221;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:01&lt;/strong&gt;: After the quickest backup in history, we begin the database changes for &amp;#8220;Application 2&amp;#8221;. (We did double check, of course, to make sure the backup was successful; when a backup is that quick, you have to wonder if it really backed up at all&amp;hellip;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:05&lt;/strong&gt;: We&amp;#8217;re informed that half of the members of the client team won&amp;#8217;t be showing up. Yes, you read that right: They&amp;#8217;re just not coming. (Since we&amp;#8217;d already done it once, I guess they got bored with the whole thing&amp;hellip;) We&amp;#8217;re told, of course, that we can call them, if anything goes wrong. (How magnanimous.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:10&lt;/strong&gt;: The database changes are finished. We bring the App Servers for &amp;#8220;Application 2&amp;#8221; back online, so that the deployment of that application can begin.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:10&amp;ndash;1:35&lt;/strong&gt;: We deploy &amp;#8220;Application 2&amp;#8221;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:35&amp;ndash;1:40&lt;/strong&gt;: We conduct our Sanity Test. Our testing is positive, which means that we&amp;#8217;ve fixed the first issue we had problems with, on the last deployment. (Phew!) The client also jumps on the application, to start testing, but I give him a verbal slap on the wrist for it&amp;mdash;I&amp;#8217;d prefer us to finish &lt;em&gt;our&lt;/em&gt; testing, before handing it over to the client. After my testing is done&amp;mdash;which only takes a couple of minutes anyway&amp;mdash;I give the client the go ahead to do his testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:40&lt;/strong&gt;:  At this point, we&amp;#8217;re ready to begin the deployment for &amp;#8220;Application 1&amp;#8221;, but, fortunately and unfortunately, we&amp;#8217;re about an hour ahead of schedule. It&amp;#8217;s fortunate because it means there is a chance of getting to bed early; it&amp;#8217;s &lt;em&gt;un&lt;/em&gt;fortunate because the people we need for the next phase of the deployment aren&amp;#8217;t on the bridge&amp;mdash;in fact, they&amp;#8217;re probably &lt;em&gt;sleeping&lt;/em&gt;, since they aren&amp;#8217;t expecting to be needed, yet.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:40&amp;ndash;1:45&lt;/strong&gt;: We call them on their home numbers, but they sleep through the calls. This is a fairly normal event, for late-night deployments; the human body is used to being asleep, at this time. So we take it in stride, and simply keep trying, maintaining our good humour. We finally get hold of them, and they join the bridge.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:45&amp;ndash;2:05&lt;/strong&gt;: We deploy &amp;#8220;Application 1&amp;#8221;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:05&amp;ndash;2:25&lt;/strong&gt;:  We do our Sanity Testing. This is a bit longer than we usually take, for this particular application&amp;mdash;we can usually run through it in 10&amp;ndash;15 minutes&amp;mdash;but I think some of us are being extra careful. The good news, though, is that everything is working fine&amp;mdash;meaning that the second problem we&amp;#8217;d had, last week, is also fixed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:25&amp;ndash;3:40&lt;/strong&gt;: The client does their Landing Testing, and everything goes well. This is always the nerve-wracking part for me; there is so much chatter on the bridge, and every time someone asks a question&amp;mdash;&amp;#8220;Is it supposed to work like this?&amp;#8221; or &amp;#8220;How come this page is taking so long to load?&amp;#8221;&amp;mdash;I get nervous that we&amp;#8217;ll have a bug that&amp;#8217;s a &amp;#8220;show stopper&amp;#8221;. (In other words, a bug that&amp;#8217;s serious enough to force us to back out the application.) I guess this is where I earn part of my salary, though; being able to think on my feet in the wee hours of the morning, answering questions, and deciding when a problem is serious, and when it is just a transient blip. (e.g. a link in the application that appears not to work, but it turns out it&amp;#8217;s because the link is pointing to another application that&amp;#8217;s also deploying right now.) You don&amp;#8217;t want to be wrong, and assume something is transient if it&amp;#8217;s not, or else you&amp;#8217;ll spend the next week fielding calls from the Help Desk, with your cell phone glued to your ear. On this morning, though, we don&amp;#8217;t have any bugs, serious or otherwise.&lt;br /&gt;&lt;br /&gt;And, at 3:45AM, we have another successful deployment under our belts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-6865462584550518731?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/6865462584550518731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=6865462584550518731&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/6865462584550518731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/6865462584550518731'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/09/deployment-september-2007-take-two.html' title='Deployment: September 2007 (Take Two)'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-2966186078048005874</id><published>2007-09-19T14:06:00.001-04:00</published><updated>2007-09-19T14:11:00.497-04:00</updated><title type='text'>Deployment: September 2007</title><content type='html'>This was a more complex deployment than usual. There were three major systems involved:&lt;ul&gt;&lt;li&gt;One of the back-end databases we talk to is being split into &lt;em&gt;two&lt;/em&gt; databases, for performance reasons.&lt;/li&gt;&lt;li&gt;The &amp;#8220;main&amp;#8221; application, which is web-based, was being upgraded&lt;/li&gt;&lt;li&gt;A second back-end application was also being upgraded&lt;/li&gt;&lt;/ul&gt;Something like this:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.flickr.com/photos/sernaferna/1407911627/" target="_blank"&gt;&lt;img src="http://farm2.static.flickr.com/1321/1407911627_20787c5687_m.jpg" width="240" height="183" alt="sep 2007 deployment" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;(where, as always, I&amp;#8217;ve greatly over-simplified this diagram)&lt;br /&gt;&lt;br /&gt;I was worried about the database split; in our test environments, we had a lot of problems with it, because it&amp;#8217;s a very complex thing to do; we kept encountering various permissions that needed to be re-created, and that type of thing, so I was worried that there would be additional permissions we hadn&amp;#8217;t thought of before, that we wouldn&amp;#8217;t discover until we deployed in production. In addition, the work for this split was being done by a separate team, whereas my own team was responsible for the upgrades to &amp;#8220;Application 1&amp;#8221; and &amp;#8220;Application 2&amp;#8221;. Whenever more than one team is involved in a deployment, coordination becomes an issue. Or rather, a &lt;em&gt;potential&lt;/em&gt; issue&amp;mdash;I shouldn&amp;#8217;t be so pessimistic.&lt;br /&gt;&lt;br /&gt;Because of the database split, which takes a long time to complete, we had special permission from the call centre to extend our outage, and start the deployment earlier than usual (12:00AM instead of 1:30).&lt;br /&gt;&lt;br /&gt;Here&amp;#8217;s how it went down:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10:00PM&lt;/strong&gt;:  I logged onto the conference bridge. The &amp;#8220;database split team&amp;#8221; was beginning their work at this time, to do some backups (in case of failure, later on). I simply logged on the bridge, verified they were good to go, and logged back off again.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10:00&amp;ndash;12:00&lt;/strong&gt;:  To kill time until my part of the deployment was scheduled to start, I watched a movie on my laptop. &lt;em&gt;The Man With the Golden Gun&lt;/em&gt;, in case you&amp;#8217;re interested&amp;mdash;I&amp;#8217;ve been on a James Bond kick, lately.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:00&lt;/strong&gt;: I logged back on the bridge. Everything was still going smoothly; the database backups went quicker than they&amp;#8217;d been anticipating, so they were just waiting for us to shut down our application, so that they could move on to their next piece.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:00&amp;ndash;12:05&lt;/strong&gt;: We shut down our application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:05&lt;/strong&gt;: The &amp;#8220;database split team&amp;#8221; began their next phase of the deployment, which was the actual work of splitting the databases into two. (You&amp;#8217;ll note that I&amp;#8217;m purposely not giving any details about this&amp;hellip;) I wasn&amp;#8217;t involved in this piece, so I had another hour or so to kill.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12:05&amp;ndash;1:30&lt;/strong&gt;: I finished watching my movie, and farted around doing some other stuff. Probably playing with &lt;a href="http://www.ubuntu.com/" target="_blank"&gt;Ubuntu&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:30AM&lt;/strong&gt;: I logged back onto the bridge. Again, everything was going smoothly; they&amp;#8217;d completed their database work, and were ready for us to move forward.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1:30&amp;ndash;2:00&lt;/strong&gt;: We completed the deployment for &amp;#8220;Application 2&amp;#8221;, including the Sanity Test, with some minor issues. Or so we thought. Testing wouldn&amp;#8217;t be complete, however, until &amp;#8220;Application 1&amp;#8221; could be tested, since &amp;#8220;Application 1&amp;#8221; is dependent on &amp;#8220;Application 2&amp;#8221;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:00&lt;/strong&gt;: The power went off, in the building. (Let me repeat that: &lt;em&gt;The power went off, in the building.&lt;/em&gt;) My laptop kept going, but my external monitor went off. I wasn&amp;#8217;t overly worried, since they have backup power generators; I figured that the lights would probably come back on soon. And the networking infrastructure must be powered by the generators, because my network connections were still fine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:15&lt;/strong&gt;: Someone went down to the security desk, and found out that this was a scheduled power outage. (&amp;#8220;We communicated it to all of the appropriate channels&amp;hellip;&amp;#8221;) The power was scheduled to stay off until 5:00.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:30&amp;ndash;3:00&lt;/strong&gt;: I knew that my laptop batteries wouldn&amp;#8217;t last until 5:00, so I made the decision to drive home, and continue the deployment from there. (Assuming that VPN connectivity would be up and running&amp;hellip;) During the 30 minute drive home, I stayed on the conference bridge, on my cell phone.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2:30&amp;ndash;3:00&lt;/strong&gt;: While I drove home, we completed the deployment for &amp;#8220;Application 1&amp;#8221;. (When I say &amp;#8220;we&amp;#8221;, I mean the people who did the actual work; luckily, I personally am not the one doing the work of a deployment.) Sanity Testing indicated that everything was working&amp;mdash;&lt;em&gt;except&lt;/em&gt; for connectivity to &amp;#8220;Application 2&amp;#8221;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3:00&amp;ndash;6:00&lt;/strong&gt;: We&amp;mdash;the technical team&amp;mdash;continued troubleshooting the connectivity issue between &amp;#8220;Application 1&amp;#8221; and &amp;#8220;Application 2&amp;#8221;, while we let the client begin their Landing Test. (That is, they could test everything except the pieces of &amp;#8220;Application 1&amp;#8221; that require connectivity to &amp;#8220;Application 2&amp;#8221;.) Their testing confirmed our Sanity Test results; everything worked except for the connectivity between the two systems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6:00&lt;/strong&gt;: At 6:00, we had to make a decision: We needed something up, by 7:00AM, so we either had to be confident that we could fix the system(s) within the next hour, or make the decision to roll back, since a backout takes about an hour. But then the client stepped in and granted us another hour&amp;mdash;meaning that we could stay down until 8:00&amp;mdash;to continue testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6:00&amp;ndash;6:50&lt;/strong&gt;: We continued troubleshooting, until&amp;hellip; we eventually ran out of ideas. Around this time, there was talk of extending our window for another hour, but we decided not to bother; we just didn&amp;#8217;t have anything else we could think of to test. So we reluctantly made the decision to roll back.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7:00&amp;ndash;8:15AM&lt;/strong&gt;: We rolled each of the three systems back. (That is, we &amp;#8220;re-joined&amp;#8221; the two databases together, and rolled &amp;#8220;Application 1&amp;#8221; and &amp;#8220;Application 2&amp;#8221; back to their pre-deployment states.) It took a little longer than we&amp;#8217;d anticipated, so we were 15 minutes late getting back up and running, but we were so disappointed at having had to roll back in the first place that the 15 minute delay was the least of our worries.&lt;br /&gt;&lt;br /&gt;So, as it turns out, the database split, which I&amp;#8217;d been worried about, went very smoothly. Frankly, I hadn&amp;#8217;t been expecting any problems with &amp;#8220;Application 2&amp;#8221;, which turned out to be a problem for us. &lt;br /&gt;&lt;br /&gt;As I write this, the deployment has been re-scheduled to be re-attempted this weekend (a week after the original attempt). We&amp;#8217;ve fixed the issue which prevented &amp;#8220;Application 1&amp;#8221; and &amp;#8220;Application 2&amp;#8221; from talking to each other, and tested the changes, and are now confident that we&amp;#8217;ll be able to get it in, this time.&lt;br /&gt;&lt;br /&gt;There was talk of splitting the release into two deployments; one for the &amp;#8220;database split&amp;#8221;, and one for &amp;#8220;Application 1&amp;#8221; and &amp;#8220;Application 2&amp;#8221;. But it was eventually decided that&lt;ol&gt;&lt;li&gt;It would be too much work to re-jig &amp;#8220;Application 1&amp;#8221; to work with the database split, without incorporating all of the other changes that were supposed to be released as part of this deployment&lt;/li&gt;&lt;li&gt;We were confident enough that we&amp;#8217;d solved our issues that we figured it was worth the risk to do it all in one shot, again&lt;/li&gt;&lt;/ol&gt;So there will be another post here, probably next week, to outline how the second attempt goes, for this deployment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-2966186078048005874?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/2966186078048005874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=2966186078048005874&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2966186078048005874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/2966186078048005874'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/09/deployment-september-2007.html' title='Deployment: September 2007'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1321/1407911627_20787c5687_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3009195741059085267</id><published>2007-09-18T14:45:00.001-04:00</published><updated>2007-09-18T14:45:30.300-04:00</updated><title type='text'>“Deployment” Defined/Explained</title><content type='html'>I guess I should define the term &lt;strong&gt;deployment&lt;/strong&gt;. (Unfortunately, I couldn&amp;#8217;t find a definition in the &lt;a href="http://catb.org/esr/jargon/" target="_blank"&gt;Jargon File&lt;/a&gt;, so I&amp;#8217;ll have to tackle it myself.) I&amp;#8217;m a software developer, and I deal mainly in web-based business systems. (In other words, web sites used by a company, internally, to do its work. Most of the stuff that I do isn&amp;#8217;t &amp;#8220;public&amp;#8221; or customer-facing.) &lt;br /&gt;&lt;br /&gt;For example, I&amp;#8217;m currently working on a system for a call centre; it&amp;#8217;s a website that brings up customer information, and allows you to perform transactions on behalf of that customer&amp;mdash;perform billing transactions, do technical troubleshooting, etc. etc.&lt;br /&gt;&lt;br /&gt;Because I use web-based technologies, for my applications, the structure is usually something like this:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.flickr.com/photos/sernaferna/1403550478/" target="_blank"&gt;&lt;img src="http://farm2.static.flickr.com/1312/1403550478_04d8d96317_m.jpg" width="240" height="220" alt="simple app" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;The users&amp;#8217; browsers connect to the &lt;strong&gt;web server&lt;/strong&gt;, where the application resides, and the application, in turn, accesses other &lt;strong&gt;back-end systems&lt;/strong&gt; or &lt;strong&gt;databases&lt;/strong&gt;. Actually, that diagram is simplified; the structure is usually a bit more like this:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.flickr.com/photos/sernaferna/1402661975/" target="_blank"&gt;&lt;img src="http://farm2.static.flickr.com/1115/1402661975_e282eee760_m.jpg" width="158" height="240" alt="less simple app" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;(Even this diagram is simplified, but of course, I can&amp;#8217;t give out technical details about the actual systems I&amp;#8217;m working on.)&lt;br /&gt;&lt;br /&gt;Usually, servers are &lt;strong&gt;clustered&lt;/strong&gt; together, to help handle the volume of calls to the application, and to provide &lt;strong&gt;redundancy&lt;/strong&gt;&amp;mdash;that is, if one server goes down, the other server handles the traffic until the broken server can be repaired.&lt;br /&gt;&lt;br /&gt;When there is a new version of the application, to introduce new features, or fix bugs, it has to be installed on the &lt;strong&gt;Application Servers&lt;/strong&gt;. (Sometimes changes have to be made to the Web Servers, too.) There is also usually work to be done on one or more of the back-end databases that the application uses for its data. Since the systems I work on are web-based, there is typically nothing to install on any users&amp;#8217; workstations; they use their web browsers to access the application, so as soon as the application is updated, they start seeing it immediately.&lt;br /&gt;&lt;br /&gt;A &lt;strong&gt;deployment&lt;/strong&gt; is when we un-install the current version of the application, on those servers, and re-install a new version. Typically, for these types of applications, a deployment is a tricky process, involving many steps, that have to be performed in a proper sequence. Certain parts of the deployment can&amp;#8217;t be completed until other things have completed successfully. It needs to be planned out in advance, in detail, and, where I work, we typically create a &lt;strong&gt;deployment plan&lt;/strong&gt;, where we detail these steps.&lt;br /&gt;&lt;br /&gt;And, because a deployment is so complex, a deployment plan needs to include a &lt;strong&gt;backout&lt;/strong&gt;, or &lt;strong&gt;rollback&lt;/strong&gt;, strategy. If you start a deployment, and for whatever reason it doesn&amp;#8217;t work, you need to be able to go back to the version of the application that &lt;em&gt;had&lt;/em&gt; been working, before you started the deployment.&lt;br /&gt;&lt;br /&gt;As an example, here&amp;#8217;s what a typical deployment is like for me, these days:&lt;ol&gt;&lt;li&gt;Because the application I&amp;#8217;m currently working on is for a call centre, which is up and running 24/7, our deployments have to be scheduled for times when the call centre is the least busy; for us, this means deployments happen Saturday nights/Sunday mornings, beginning at 1:30AM. During these wee hours on a Sunday morning, the call centre isn&amp;#8217;t too busy, so the few people who are working can get by without our application for a while.&lt;ul&gt;&lt;li&gt;But we do have to get the application back up and running by 7:00AM Sunday morning, when they start to get a bit more busy. So our deployment window is 1:30&amp;ndash;7:00 AM.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Our first step, when doing a deployment, is to shut the application down, so that the users can&amp;#8217;t use it while we&amp;#8217;re working.&lt;ul&gt;&lt;li&gt;There are times, during the deployment, when the application will be in an &amp;#8220;inconsistent state&amp;#8221;&amp;mdash;meaning that some pieces are up and running, and others are not. It can cause problems when people are using the application in such a state.&lt;/li&gt;&lt;li&gt;In our specific case, shutting down the application means shutting down the Application Servers. Depending on the technologies used, this can be quick, or it can take a few minutes.&lt;/li&gt;&lt;li&gt;For other applications, this might be accomplished by shutting down the load balancers. &lt;br /&gt;&lt;br /&gt;Or, better yet, one might redirect the load balancer to another version of the application, which simply says that the application is down.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Once we have shut the application down, we would deploy any appropriate changes to back-end systems; in many cases, this might be changes to a database, but in more complex deployments, we may have to sit and wait, at this point, while another back-end system performs their own, complex, deployment.&lt;/li&gt;&lt;li&gt;Once all of the back-end systems are back up and running&amp;mdash;and tested, if necessary&amp;mdash;we bring the Application Servers back up, and begin deploying the &amp;#8220;main&amp;#8221; application code.&lt;/li&gt;&lt;li&gt;Once the application is back up, we do a &lt;strong&gt;sanity test&lt;/strong&gt;. This means that my team, who developed the application, does a quick test, to make sure that it&amp;#8217;s properly back up and running.&lt;/li&gt;&lt;li&gt;Once the sanity test is done, we would hand the application over to our client, who would do a &lt;strong&gt;landing test&lt;/strong&gt;. This is a more thorough test, where they specifically test each new piece of functionality in the application, as well as &lt;strong&gt;regression testing&lt;/strong&gt; existing parts of the application, to make sure it still works.&lt;ul&gt;&lt;li&gt;Typically, of course, I would also be performing these tests on my own. If there are issues, I want to know as soon as possible.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;If everything goes well, this is the end of the deployment. Once all of the testing has passed successfully, we can go home and go to bed.&lt;/li&gt;&lt;li&gt;If things go wrong, however&amp;mdash;if some of the testing fails&amp;mdash;we then have to decide how to proceed. Normally, we will do some troubleshooting on the spot; if it&amp;#8217;s an issue we can fix immediately, we do so. Sometimes we can, and the deployment still ends successfully.&lt;ul&gt;&lt;li&gt;In some cases, even when we troubleshoot the issue, we&amp;#8217;re not able to solve the problem. There can be numerous reasons for this; perhaps it is a complex problem, that requires research, or perhaps we just run out of time, before we have to have the application back up and running for the users.&lt;/li&gt;&lt;li&gt;In cases where we&amp;#8217;re not able to solve the problem, we eventually have to make a decision to back our changes out, and put the old version of the application back in place.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;And this is how a deployment works for the application I&amp;#8217;m currently working on. Deployments for other applications could be much simpler, or much more complex.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3009195741059085267?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3009195741059085267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3009195741059085267&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3009195741059085267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3009195741059085267'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/09/definedexplained.html' title='&amp;#8220;Deployment&amp;#8221; Defined/Explained'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1312/1403550478_04d8d96317_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6970266442002658284.post-3104867545975656820</id><published>2007-09-18T12:32:00.001-04:00</published><updated>2007-09-18T12:32:44.286-04:00</updated><title type='text'>Deployment Blog</title><content type='html'>I&amp;#8217;ve threatened to do it, in the past, and I&amp;#8217;m finally making good on my threat: I&amp;#8217;ve started a &amp;#8220;Deployment Blog&amp;#8221;. (It&amp;#8217;s&amp;hellip; er&amp;hellip; it&amp;#8217;s the blog you&amp;#8217;re reading right now.)  I do a lot of deployments&amp;mdash;about one a month, these days&amp;mdash;so it&amp;#8217;s time I started blogging about them. As with the many other blogs I&amp;#8217;ve started, I&amp;#8217;m sure nobody will find this blog interesting but me. Only a fellow &lt;a href="http://catb.org/esr/jargon/html/N/nerd.html" target="_blank"&gt;nerd&lt;/a&gt;/&lt;a href="http://catb.org/esr/jargon/html/G/geek.html" target="_blank"&gt;geek&lt;/a&gt; could possibly find this interesting, and even then, why would they want to read about &lt;em&gt;my&lt;/em&gt; deployments? They&amp;#8217;ve got their own to worry about.&lt;br /&gt;&lt;br /&gt;Still, I&amp;#8217;ve started it, and I&amp;#8217;ll stick with it. For a while.&lt;br /&gt;&lt;br /&gt;For those who don&amp;#8217;t read my &lt;a href="http://sernaferna.blogspot.com" target="_blank"&gt;main blog&lt;/a&gt;, here are some links to posts from the past, when I mentioned previous deployments:&lt;ul&gt;&lt;li&gt;&lt;a href="http://sernaferna.blogspot.com/2005/05/intellgent-well-thought-out-post.html" target="_blank"&gt;An intellgent, well-thought-out post covering the state of serna&amp;#8217;s life at 11:30 on a Sunday night&lt;/a&gt;&amp;mdash;one of those posts where the title sucks you in, only to be disappointed by the post itself&lt;/li&gt;&lt;li&gt;&lt;a href="http://sernaferna.blogspot.com/2006/05/long-long-weekend.html" target="_blank"&gt;The Long, &lt;em&gt;Long&lt;/em&gt; Weekend&lt;/a&gt;&amp;mdash;the first deployment I really wrote about&lt;/li&gt;&lt;li&gt;&lt;a href="http://sernaferna.blogspot.com/2006/10/my-deployment.html" target="_blank"&gt;My Deployment&lt;/a&gt;&amp;mdash;a deployment post which is more detailed than usual&lt;/li&gt;&lt;li&gt;&lt;a href="http://sernaferna.blogspot.com/2006/10/deployments-try-that-again-shall-we.html" target="_blank"&gt;Deployment&amp;mdash;Let&amp;#8217;s try that again, shall we?&lt;/a&gt; and &lt;a href="http://sernaferna.blogspot.com/2006/10/deployment-was-successful-you-can.html" target="_blank"&gt;Deployment was successful. You can relax now.&lt;/a&gt;&amp;mdash;this was a second try at the previous deployment&lt;/li&gt;&lt;li&gt;&lt;a href="http://sernaferna.blogspot.com/2007/08/deployments.html" target="_blank"&gt;Deployments&lt;/a&gt;&amp;mdash;a general post about what my Saturday night deployments are like&lt;/li&gt;&lt;li&gt;&lt;a href="http://sernaferna.blogspot.com/2007/08/another-deployment.html" target="_blank"&gt;Another Deployment&lt;/a&gt;&amp;mdash;a post where I had the idea for starting a blog about deployments, and then came to the conclusion that I never would. Shows how much &lt;em&gt;I&lt;/em&gt; know.&lt;/li&gt;&lt;/ul&gt;So from now on, when I have a deployment, I&amp;#8217;ll write about it here. (Also, I will put up a post which describes what a deployment &lt;em&gt;is&lt;/em&gt;, for those who aren&amp;#8217;t familiar with the term.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6970266442002658284-3104867545975656820?l=sernadeployments.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sernadeployments.blogspot.com/feeds/3104867545975656820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6970266442002658284&amp;postID=3104867545975656820&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3104867545975656820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6970266442002658284/posts/default/3104867545975656820'/><link rel='alternate' type='text/html' href='http://sernadeployments.blogspot.com/2007/09/deployment-blog.html' title='Deployment Blog'/><author><name>David Hunter</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-oNJevjXYkt8/AAAAAAAAAAI/AAAAAAAAATk/amGwGCiHyn4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
