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

<channel>
	<title>process monitoring « Plataformatec Blog</title>
	<atom:link href="/tag/process-monitoring/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Plataformatec&#039;s place to talk about Ruby, Ruby on Rails, Elixir, and software engineering</description>
	<lastBuildDate>Thu, 18 Jan 2018 17:43:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.2</generator>
	<item>
		<title>WIP Limit &#8211; A further study</title>
		<link>/2018/01/wip-limit-a-further-study/</link>
		
		<dc:creator><![CDATA[Lucas Colucci]]></dc:creator>
		<pubDate>Thu, 18 Jan 2018 17:43:30 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile methodology]]></category>
		<category><![CDATA[Agile Software]]></category>
		<category><![CDATA[process monitoring]]></category>
		<guid isPermaLink="false">/?p=7112</guid>

					<description><![CDATA[<p>One year ago I wrote a post talking about WIP limit and its importance. At the time, it was a case study and an introduction to the subject. However, after working on more projects and meeting different people, I saw that, maybe, you don&#8217;t need it. Introduction When we use WIP limit, we limit the ... <a class="read-more-link" href="/2018/01/wip-limit-a-further-study/">»</a></p>
<p>The post <a href="/2018/01/wip-limit-a-further-study/">WIP Limit – A further study</a> first appeared on <a href="/">Plataformatec Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">One year ago I wrote a </span><a href="/2016/09/case-study-of-a-wip-limit-implementation-why-when-and-how-to-use-wip-limits/"><span style="font-weight: 400;">post talking about WIP limit and its importance</span></a><span style="font-weight: 400;">. At the time, it was a case study and an introduction to the subject. However, after working on more projects and meeting different people, I saw that, maybe, you don&#8217;t need it.</span></p>
<p><b>Introduction</b></p>
<p><span style="font-weight: 400;">When we use WIP limit, we limit the number of concurrent tasks. It could be a limit to each column of a Kanban Board; it could be a limit to the whole system; or even a limit to a set of steps of the process.</span></p>
<p><span style="font-weight: 400;">The idea behind limiting the work in progress is to work side-by-side with </span><a href="https://en.wikipedia.org/wiki/Little%27s_law"><span style="font-weight: 400;">Little&#8217;s Law</span></a><span style="font-weight: 400;"> and try to improve the flow of the system, diminishing the lead time (LT) of a work item. And that works like a charm for machines. For software development? The relationship between WIP, LT and throughput is not that straightforward.</span></p>
<p><b>People are different</b></p>
<p><span style="font-weight: 400;">When we have a chain of machines linked together, in which the output from one feeds the input of other, everything is easier to predict. Now, imagine a situation in which:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Items entering the first machine are not always the same size. And the machines don&#8217;t follow a linear relationship between size and time to complete a task.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Each machine can, unpredictably, change its behavior. One week, it may receive an input of size x and generate its outcome in 1 hour. In another week, it will, unpredictably, take 3 hours to produce the same result.</span></li>
</ul>
<p><span style="font-weight: 400;">Things start to get tricky, right?</span></p>
<p><b>WIP Saturation Chart</b></p>
<p><span style="font-weight: 400;">From my experience, some readings and even the way I work, I saw that different people work best with different workloads. I believe that a chart of WIP by the throughput of a person follow something like this:</span></p>
<p><img fetchpriority="high" decoding="async" class="size-medium wp-image-7113 aligncenter" src="/wp-content/uploads/2018/01/WIP-saturation-chart-300x187.png" alt="" width="300" height="187" srcset="/wp-content/uploads/2018/01/WIP-saturation-chart-300x187.png 300w, /wp-content/uploads/2018/01/WIP-saturation-chart.png 426w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p><span style="font-weight: 400;">This chart was taken from </span><a href="https://www.infoq.com/articles/how-kanban-works"><span style="font-weight: 400;">https://www.infoq.com/articles/how-kanban-works</span></a><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">Some people work best with more t</span>han one task at a time. For different reasons. They might get unmotivated with few responsibilities, or it might be easy for them to rapidly change focus between tasks, for example. On the other hand, other people have a really difficult time changing focus and handling many tasks at once.</p>
<p><span style="font-weight: 400;">Other than depending on the person, it also depends on the project: it might involve third-parties that regularly block their work, it might have a testing process that takes weeks or months to finish, etc.</span></p>
<p><span style="font-weight: 400;">So, how can we come up with a single number that will magically fit all those curves under the same process? You can&#8217;t. But that doesn&#8217;t mean you shouldn&#8217;t.</span></p>
<p><b>So what? Should I just go crazy and forget limits?</b></p>
<p><span style="font-weight: 400;">As I said, it is just impossible to get a number that limits the work of everyone in an optimal manner. But that doesn&#8217;t mean you shouldn&#8217;t use one. I see, until the time of this post, two options for two different contexts:</span></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">You have someone looking at your process. If you have a Project Manager, an Agile Coach, a Scrum Master or other person that takes care of your process, you don&#8217;t need WIP limits. You need WIP management. This person can better understand how each person works and alert people to the amount of WIP according to each individual necessity as well as the type of project. I&#8217;d only use WIP Limits here to give process ownership to the rest of the team. This means that the person looking at the process would be actually temporary.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">You don&#8217;t have a process guru. In this case, limiting the WIP with numbers and trying to tune it with time will give you a better process. It will </span><i><span style="font-weight: 400;">not</span></i><span style="font-weight: 400;"> give you the optimal outcome, but it will unquestionably give you a better result.</span></li>
</ol>
<p><b>Conclusion</b></p>
<p><span style="font-weight: 400;">WIP limit works. It will improve your process. But it is not a silver-bullet (I feel like a parrot repeating this). Look at your context (people + project) and use whatever delivers a better outcome.</span></p>
<p><span style="font-weight: 400;">What do you think? Do you believe in WIP Limits or not? Leave your comments below!</span></p>
<p>&nbsp;</p>
<div style="margin: 20px 0 60px;"><a href="http://pages.plataformatec.com.br/ebook-strategies-to-improve-software-development-workflow?utm_source=our-blog&amp;utm_medium=referral&amp;utm_campaign=ebook-5-strategies&amp;utm_content=cta-blog-post-bottom" target="_blank" rel="noopener"><img decoding="async" class="aligncenter size-full wp-image-5371" src="/wp-content/uploads/2016/08/blog-cta-strategies-to-improve-software-development-workflow.png" alt="5 Strategies to Improve a Software Development Workflow -- Reserve your copy" width="831" height="147" /></a></div><p>The post <a href="/2018/01/wip-limit-a-further-study/">WIP Limit – A further study</a> first appeared on <a href="/">Plataformatec Blog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Definição de prazo em projetos de software</title>
		<link>/2017/03/definicao-de-prazo-em-projetos-de-software/</link>
		
		<dc:creator><![CDATA[Lucas Colucci]]></dc:creator>
		<pubDate>Thu, 09 Mar 2017 21:04:35 +0000</pubDate>
				<category><![CDATA[Português]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[CTO]]></category>
		<category><![CDATA[process monitoring]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development practices]]></category>
		<guid isPermaLink="false">/?p=6149</guid>

					<description><![CDATA[<p>Este é um dos capítulos do nosso mais novo ebook &#8220;Como lidar com prazos em projetos de software&#8221;. Faça o download agora. É grátis! . Esta ação é mais indicada antes de começar um projeto ou nas primeiras semanas de desenvolvimento, pois é quando normalmente há mais flexibilidade para mudanças de prazos. Na nossa experiência, ... <a class="read-more-link" href="/2017/03/definicao-de-prazo-em-projetos-de-software/">»</a></p>
<p>The post <a href="/2017/03/definicao-de-prazo-em-projetos-de-software/">Definição de prazo em projetos de software</a> first appeared on <a href="/">Plataformatec Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div style="border:solid 1px #FFE041; background-color:#FFF9CA; padding:10px 15px; font:13px Gotham, Helvetica Neue, Helvetica, Arial,' sans-serif';line-height:1.8em;">Este é um dos capítulos do nosso mais novo ebook &#8220;Como lidar com prazos em projetos de software&#8221;. <a href="http://pages.plataformatec.com.br/ebook-como-lidar-com-prazos-em-projetos-de-software?utm_source=our-blog&#038;utm_medium=referral&#038;utm_campaign=ebook-como-lidar-com-prazos&#038;utm_content=link" target="_blank">Faça o download agora. <strong>É grátis!</strong></a> .</div>
<p>Esta ação é mais indicada antes de começar um projeto ou nas primeiras semanas de desenvolvimento, pois é quando normalmente há mais flexibilidade para mudanças de prazos.</p>
<p><img decoding="async" src="/wp-content/uploads/2017/03/definicao-prazo-projetos-software.png" alt="" width="892" height="440" class="aligncenter size-full wp-image-6150" style="border:none;" srcset="/wp-content/uploads/2017/03/definicao-prazo-projetos-software.png 892w, /wp-content/uploads/2017/03/definicao-prazo-projetos-software-300x148.png 300w, /wp-content/uploads/2017/03/definicao-prazo-projetos-software-768x379.png 768w" sizes="(max-width: 892px) 100vw, 892px" /></p>
<p>Na nossa experiência, já vimos diversos motivos para uma definição de prazo imprópria em um projeto, no entanto a mais recorrente é a falta ou falha de comunicação entre o CTO e o CEO. Com isso, vamos focar em como melhorar essa comunicação para que seja possível alinhar as decisões de negócio com as decisões de tecnologia.</p>
<p>Sabe-se que a área de desenvolvimento de software segue processos que diferem não só do resto da indústria mas muitas vezes difere também das outras áreas na mesma empresa. A quantidade de incertezas são, geralmente, maiores e faz com que o tempo para terminar um projeto seja altamente variável mesmo quando, aparentemente, tenha natureza conhecida. E essa diferença precisa ser entendida por ambos CTO e CEO.</p>
<p><a href="http://pages.plataformatec.com.br/ebook-como-lidar-com-prazos-em-projetos-de-software?utm_source=our-blog&#038;utm_medium=referral&#038;utm_campaign=ebook-como-lidar-com-prazos&#038;utm_content=cta-blog-post-middle" target=_blank""><br />
<img loading="lazy" decoding="async" src="/wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos.jpg" alt="" width="831" height="147" class="aligncenter size-full wp-image-6158" srcset="/wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos.jpg 831w, /wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos-300x53.jpg 300w, /wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos-768x136.jpg 768w" sizes="(max-width: 831px) 100vw, 831px" /><br />
</a></p>
<p>As causas desse desalinhamento podem ser:</p>
<ol>
<li><strong>Falta de comunicação</strong> quando decisões de negócio e tecnologia são tomadas. Essas duas decisões precisam estar em constante harmonia pois uma é o que impulsiona a outra.</li>
<li><strong>Falta de priorização</strong> das demandas. Às vezes existem muitas features para serem desenvolvidas de uma vez, sem qualquer priorização. Isso faz com que o processo de desenvolvimento fique saturado e demore para dar vazão a toda essa demanda.</li>
<li><strong>Conflito de mentalidade</strong>. Devido aos diferentes backgrounds dos envolvidos e, portanto, diferentes visões sobre a empresa, a relação entre CTO e CEO pode se tornar deficiente e conflitante. Isso impede a evolução do processo por não haver acordos.</li>
</ol>
<p>Por mais que seja possível dar um manual com um passo-a-passo do que se deve fazer para melhorar essa relação, tudo se resumiria a uma ação: melhorar a comunicação.</p>
<p>Quando você se encontra em posições de alta responsabilidade, você precisa ter um entendimento maior dos seus pares e o trabalho que estes exercem para que consigam, juntos, traçar o futuro da empresa. Por isso, para melhorar a comunicação, é necessário entender melhor como funciona a tomada de decisões do CEO, quais são as estratégias da empresa para os próximos meses e anos e porque elas são importantes.</p>
<p>Com isso feito, é necessária a explicação de como um processo de desenvolvimento de software difere de outros processos, e como lidar com isso da melhor maneira possível. Com ambas as partes a par dos caminhos que precisam ser tomados, é possível alinhar prazos de modo mais fácil.</p>
<p><a href="http://pages.plataformatec.com.br/ebook-como-lidar-com-prazos-em-projetos-de-software?utm_source=our-blog&#038;utm_medium=referral&#038;utm_campaign=ebook-como-lidar-com-prazos&#038;utm_content=cta-blog-post-bottom" target=_blank""><br />
<img loading="lazy" decoding="async" src="/wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos.jpg" alt="Como lidar com prazo em projetos de software [e-book gratuito]" width="831" height="147" class="aligncenter size-full wp-image-6158" srcset="/wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos.jpg 831w, /wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos-300x53.jpg 300w, /wp-content/uploads/2017/03/CTA-blog-ebook-como-lidar-com-prazos-768x136.jpg 768w" sizes="(max-width: 831px) 100vw, 831px" /><br />
</a></p><p>The post <a href="/2017/03/definicao-de-prazo-em-projetos-de-software/">Definição de prazo em projetos de software</a> first appeared on <a href="/">Plataformatec Blog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Monitoring Delayed Job with Bluepill and Capistrano</title>
		<link>/2010/02/monitoring-delayed-job-with-bluepill-and-capistrano/</link>
					<comments>/2010/02/monitoring-delayed-job-with-bluepill-and-capistrano/#comments</comments>
		
		<dc:creator><![CDATA[Hugo Baraúna]]></dc:creator>
		<pubDate>Wed, 10 Feb 2010 17:47:33 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[bluepill]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[delayed job]]></category>
		<category><![CDATA[process monitoring]]></category>
		<guid isPermaLink="false">/?p=714</guid>

					<description><![CDATA[<p>So, you already did the right choice of using Delayed Job for your background processing, great! But, how are you going to be certain that your background processing will still be happening while you are sleeping? And if your Delayed Job process goes down, are you going to wake up in the dawn e restart ... <a class="read-more-link" href="/2010/02/monitoring-delayed-job-with-bluepill-and-capistrano/">»</a></p>
<p>The post <a href="/2010/02/monitoring-delayed-job-with-bluepill-and-capistrano/">Monitoring Delayed Job with Bluepill and Capistrano</a> first appeared on <a href="/">Plataformatec Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>So, you already did the right choice of using Delayed Job for your background processing, great! But, how are you going to be certain that your background processing will still be happening while you are sleeping? And if your Delayed Job process goes down, are you going to wake up in the dawn e restart it manually? I wouldn&#8217;t do that, I really appreciate my sleep. So, what&#8217;s the solution?</p>
<p>As rubyists and railers, we already know there are solutions, like <a href="http://god.rubyforge.org/" target="_blank">God</a>, that do this job for us. However, there are another solutions, like <a href="http://github.com/arya/bluepill/" target="_blank">Bluepill</a>. Bluepill is a process monitoring tool like God, but, unlike God, <a href="http://asemanfar.com/Why-We-Wrote-Bluepill" target="_blank">it doesn&#8217;t have memory leak</a>, according to its authors.</p>
<p>Well, as I don&#8217;t want to wake up in the dawn to restart my Delayed Job process, and neither I want to restart my God process because of memory leaking, I decided to use Bluepill. But, how I use Bluepill to monitor my Delayed Job process?</p>
<p>In order to configure Bluepill to monitor Delayed Job, and use Capistrano to automate some tasks, we have basically 4 steps:</p>
<ol>
<li>Install and configure Delayed Job</li>
<li>Install and configure Bluepill</li>
<li>Write a Capistrano Recipe for Bluepill</li>
<li>Set some stuff in /etc/sudoers</li>
</ol>
<p>Let&#8217;s take a look at each step.</p>
<h3>Installing and configuring Delayed Job</h3>
<p>Installing and configuring Delayed Job is super simple, just read the project&#8217;s <a href="http://github.com/collectiveidea/delayed_job" target="_blank">README</a>, which is very clear. I also recommend watching the <a href="http://railscasts.com/episodes/171-delayed-job" target="_blank">RailsCast episode</a> about Delayed Job, there is some good information there, like using the Delayed Job CollectiveIdea&#8217;s fork, instead of the original repo&#8217;s version.</p>
<h3>Installing and configuring Bluepill</h3>
<p>There&#8217;s no secret in installing Bluepill too, you just need to read the project&#8217;s <a href="http://github.com/arya/bluepill/" target="_blank">README</a> and follow its steps.</p>
<p>In the confiuration part, you can see all the options in the <a href="http://github.com/arya/bluepill/" target="_blank">README</a> too. In my case, the configuration file is at <code>RAILS_ROOT/config/production.pill</code>.</p>
<pre lang="ruby">Bluepill.application("my_app") do |app|
  app.process("delayed_job") do |process|
    process.working_dir = "/home/deploy/my_app/current"

    process.start_grace_time    = 10.seconds
    process.stop_grace_time     = 10.seconds
    process.restart_grace_time  = 10.seconds

    process.start_command = "ruby script/delayed_job -e production start"
    process.stop_command  = "ruby script/delayed_job -e production stop"

    process.pid_file = "/home/deploy/my_app/shared/pids/delayed_job.pid"
    process.uid = "deploy"
    process.gid = "deploy"
  end
end
</pre>
<p>However, I had a little problem between the interaction of Bluepill and Delayed Job. Delayed Job is not interpreting very well the <code>-e production</code> flag. You can see more details about that in an <a href="http://github.com/collectiveidea/delayed_job/issues/#issue/38" target="_blank">issue</a> I opened.</p>
<p>The first solution I thought was to use <code>RAILS_ENV=production ruby script/delayed_job start</code>, however, for some reason that I don&#8217;t know exactly, it didn&#8217;t work.</p>
<p>So, the solution I came up with was to modify the file in <code>RAILS_ROOT/script/delayed_job</code> to the following one:</p>
<pre lang="ruby" line="1">
#!/usr/bin/env ruby

# TODO improve the line of code below
# The line below is just a hack while we wait the delayed job guys answer the following issue
# http://github.com/collectiveidea/delayed_job/issues#issue/38
ENV['RAILS_ENV'] ||= "production"
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize
</pre>
<p>As the <code>-e production</code> was not being interpreted properly by Delayed Job, I&#8217;m setting manually the <code>RAILS_ENV</code> to <code>production</code> (line 6), therefore I&#8217;m supposing  that you are using Bluepill to monitor processes that are in a production environment.</p>
<h3>Capistrano recipe for Bluepill</h3>
<p>In order to automate the start and stop Bluepill&#8217;s tasks, I wrote the following capistrano&#8217;s recipe:</p>
<pre lang="ruby"># deploy credentials
set :user, "deploy"
set :deploy_to, "/home/deploy/#{application}"
set :use_sudo, false
set :rails_env, "production"

# Bluepill related tasks
after "deploy:update", "bluepill:quit", "bluepill:start"
namespace :bluepill do
  desc "Stop processes that bluepill is monitoring and quit bluepill"
  task :quit, :roles => [:app] do
    sudo "bluepill stop"
    sudo "bluepill quit"
  end

  desc "Load bluepill configuration and start it"
  task :start, :roles => [:app] do
    sudo "bluepill load /home/deploy/my_app/current/config/production.pill"
  end

  desc "Prints bluepills monitored processes statuses"
  task :status, :roles => [:app] do
    sudo "bluepill status"
  end
end
</pre>
<p>Note that instead of using the <code>run</code> capistrano&#8217;s method, I&#8217;m using the <code>sudo</code> method. I&#8217;m doing this because the bluepill command must be run as root. And that, takes us to the next topic.</p>
<h3>/etc/sudoers</h3>
<p>Since I need to run the bluepill command as root, should I change from <code>set :user, "deploy"</code> to <code>set :user, "root"</code>? I think it&#8217;s not a good idea, we don&#8217;t like to give root access to anything, even to deployment. So, what should I do? It&#8217;s simple, you just need to edit your sudoers file.</p>
<p>In order to do this, you need to use the <code>visudo</code> command to open and edit the <code>/etc/sudoers</code> file. Once with the file opened, just add the following line to the end of the file:</p>
<p><code>deploy ALL=(ALL) NOPASSWD: /usr/local/bin/bluepill</code></p>
<p>Now, you&#8217;re done, the deploy user already can do <code>sudo bluepill</code> without giving any password. Problem solved without opening security holes.</p>
<p>After these 4 steps, you&#8217;re ready to sleep at night without worrying about your Delayed Job process. And, if you want to know the status of the monitored processes by Buepill, you just need to run the following capistrano task in your local machine:</p>
<p><code>cap bluepill:status</code></p>
<p>And you, what are your solutions to sleep in peace?</p>
<p><strong>Update:</strong> if are having trouble with restarting Bluepill with Capistrano, take a look at <a href="http://groups.google.com/group/bluepill-rb/browse_thread/thread/53e15749ee0edd93?hl=en">this</a>.</p><p>The post <a href="/2010/02/monitoring-delayed-job-with-bluepill-and-capistrano/">Monitoring Delayed Job with Bluepill and Capistrano</a> first appeared on <a href="/">Plataformatec Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>/2010/02/monitoring-delayed-job-with-bluepill-and-capistrano/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
	</channel>
</rss>
