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

<channel>
	<title>microservices Archives | Clever Cloud</title>
	<atom:link href="https://stagingv6.cleverapps.io/blog/tag/microservices/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>From Code to Product</description>
	<lastBuildDate>Mon, 09 Jul 2018 17:32:00 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>microservices Archives | Clever Cloud</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The specifics of PaaS deployment for JHipster</title>
		<link>https://stagingv6.cleverapps.io/blog/engineering/2018/07/09/specifics-paas-deployment-jhipster/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Mon, 09 Jul 2018 17:32:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[jhipster]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[netflixoss]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2018/07/09/specifics-paas-deployment-jhipster/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p><p>We see a lot of people trying to deploy JHipster applications on Clever Cloud. It does not seem to be fully understood all the time. Especially with the differences between deploying on IaaS and PaaS. And since JHipsterConf is around the corner, it&#39;s the perfect time to write about it, to explain a bit what it is and how it can be deployed on PaaS platform like Clever Cloud.</p>
<span id="more-2813"></span>

<h2 id="what-is-jhipster">What is JHipster?</h2>
<p>If you are not familiar with JHipster, it&#39;s a scaffolding system to bootstrap applications using Spring Boot and AngularJS or React. You can choose to scaffold a monolithic application (Which are great and modular and everything because Spring Boot lets you build modular monolith. If you have no idea what you are doing you should start with this) or microservices architecture with an API Gateways and a registry.</p>
<p>When scaffolding microservices, you are using the Spring Boot and Netflix OSS stack. That’s something you want to know in general when looking for documentation online. Most of the things you will read here apply both to JHipster and to Spring Boot + Netflix OSS deployments.</p>
<h2 id="jhipster-or-netflixoss-versus-iaas-or-paas">JHipster or NetflixOSS versus IaaS or PaaS</h2>
<p>Is there an incompatibility between JHipster/Netflix OSS and PaaS deployment? The reason I am raising this question is that this stack was pretty much made for IaaS deployment, more particularly AWS, where fewer things are managed than on any PaaS platform.</p>
<p>And as such JHipster comes up with lots of nifty tools to compensate the absence of services usually provided by higher level solutions like CaaS or PaaS. This is especially true when you are deploying a microservices architecture. So, will this overlap when deploying on Clever Cloud? Are things even compatible? Yes, it is, and in this post, I will show you some exciting things you can do.</p>
<h3 id="reverse-proxy-and-service-registry">Reverse proxy and Service Registry</h3>
<p>One of the central question raised by our users doing microservices is how do you configure the JHipster Registry (Eureka in Netflix OSS terms). It maintains a registry of all the instances of your architecture services.</p>
<p>Going back to a classic AWS deployment, the typical behavior when you manage several instances of the same application is to deploy those apps to VMs. They all have their own set of IP/port. In their configuration, they have the different addresses of their Eureka server. They will register to that server as an instance of a particular application, identified by that IP/port couple. It is great when you manage your private network and plan to expose everything through an API gateway or your reverse proxy.</p>
<figure>
  <a href="https://cdn.clever-cloud.com/uploads/2021/08/iaas-service-registration.png" rel="noopener noreferrer" target="_blank">
    <img style="width:100%" src="https://cdn.clever-cloud.com/uploads/2021/08/iaas-service-registration.png">
  </a>
  <figcaption>IaaS - Managing VMs - Service registration</figcaption>
</figure>

<p>But as it turns out, this is already managed by PaaS providers like Clever Cloud or Heroku. So you don&#39;t have access to that IP/port for each instance. But it&#39;s OK. Eureka can be configured to support setup like these. You can use the URL given by the proxy instead.</p>
<figure>
  <a href="https://cdn.clever-cloud.com/uploads/2021/08/paas-managing-applications-service-registration.png" rel="noopener noreferrer" target="_blank">
    <img style="width:100%" src="https://cdn.clever-cloud.com/uploads/2021/08/paas-managing-applications-service-registration.png">
  </a>
  <figcaption>PaaS - Managing VMs - Service registration</figcaption>
</figure>

<p>The only issue with that is that you won’t be able to go on one specific instance since you go through the proxy. In some cases, this can become a problem. Like with the JHipster Registry.</p>
<h4 id="jhipster-registrys-statefulness-exception">JHipster Registry’s Statefulness Exception</h4>
<p>Let’s say you want to scale out your registry for failover. It seems like a legitimate thing to do. If you only have one JHipster registry instance and it’s down, you lose your service registry(Eureka) and your configuration server (Spring Cloud config, embedded in the JHipster registry, more on that later). It means your architecture is down. So you want to have several instances of the registry in case one goes down.</p>
<p>Something also worth to know is that the service registry(Eureka in Netflix OSS terms) stores things in memory. You cannot store the information in a shared database that all your instances could use. It makes the registry stateful. They all have their datastore(their RAM). So you need to have your services register themselves to each registry instance to make sure they always have the same copy of the data.</p>
<p>If you were to use the URL of your JHipster registry application given by a PaaS, so behind a reverse proxy, the service would register to a random. It depends on the PaaS load balancer. In that case, you have no guarantee that your service will have registered itself with every instance of the registry.</p>
<p>If you use an IaaS, you will have all the IP/PORT couples at your disposal to make sure each service can register to each registry.</p>
<p>If you use PaaS autoscaling, each instance is hidden behind a reverse proxy with only one URL, and you have no way to have the clients register themselves to each instance (Now you could use sticky sessions, but you would have to craft the sticky session cookie manually, and this is cumbersome). So it is much simpler to create one application with its URL instead.</p>
<p>In that case, what you need to do is deploy an application for each instance you would like. That way you get a different URL for each, and you ask all your services to register to each URL.</p>
<h3 id="configuration-management">Configuration Management</h3>
<p>Another feature that comes up with most Platform as a Service and overlap with JHipster or the Netflix OSS stack is configuration management. In JHipster case, the registry is also a Spring Cloud Config server. As such it supports different backends to store your configuration: Git, native filesystem, Databases or Vault. By default JHipster uses git. Using GitHub, in particular, is excellent as you can benefit from their WebHooks. Each time you change the configuration, your server will receive the updates and broadcast it through an AMQP system with Spring Cloud Bus if you have configured one. So, you are sure that all your architecture is up to date with the latest configuration.</p>
<p>And of course, Spring Cloud Config also supports environment variables which is what we offer by default with Clever Cloud, with some exciting orchestration tricks.</p>
<p>The PaaS granularity level being Application(as oppose to VMs in IaaS), you can assign environment variables to Applications. All these variables are injected into all the instances of the app when we boot the VM. Applications can also expose some variables for others. How does it work?</p>
<p>Applications or add-ons can be linked together. It merely means that their exposed variables will be injected into the linked app. And the great thing about this is that when an exposed variable is modified, all the linked apps are restarted in blue/green so without service interruption. So you get an up to date architecture without having to setup Webhooks and an AMQP with Spring Cloud Bus :) Note that Clever Cloud also offers a configuration provider addon that lets you define configuration without having to tied it to an app. It is a bit like a configuration server. And it works exactly like described above. It&#39;s mostly here to make a semantic distinction.</p>
<h3 id="conclusion">Conclusion</h3>
<p>JHipster and the Netflix OSS do provide some overlap to what PaaS can offer. But fear not because it’s still compatible and can benefit from the high-level feature supplied by PaaS. In the next post, I will show you all the steps to deploy this on Clever Cloud :)</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/jhipster-paas-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p><p>We see a lot of people trying to deploy JHipster applications on Clever Cloud. It does not seem to be fully understood all the time. Especially with the differences between deploying on IaaS and PaaS. And since JHipsterConf is around the corner, it&#39;s the perfect time to write about it, to explain a bit what it is and how it can be deployed on PaaS platform like Clever Cloud.</p>
<span id="more-2813"></span>

<h2 id="what-is-jhipster">What is JHipster?</h2>
<p>If you are not familiar with JHipster, it&#39;s a scaffolding system to bootstrap applications using Spring Boot and AngularJS or React. You can choose to scaffold a monolithic application (Which are great and modular and everything because Spring Boot lets you build modular monolith. If you have no idea what you are doing you should start with this) or microservices architecture with an API Gateways and a registry.</p>
<p>When scaffolding microservices, you are using the Spring Boot and Netflix OSS stack. That’s something you want to know in general when looking for documentation online. Most of the things you will read here apply both to JHipster and to Spring Boot + Netflix OSS deployments.</p>
<h2 id="jhipster-or-netflixoss-versus-iaas-or-paas">JHipster or NetflixOSS versus IaaS or PaaS</h2>
<p>Is there an incompatibility between JHipster/Netflix OSS and PaaS deployment? The reason I am raising this question is that this stack was pretty much made for IaaS deployment, more particularly AWS, where fewer things are managed than on any PaaS platform.</p>
<p>And as such JHipster comes up with lots of nifty tools to compensate the absence of services usually provided by higher level solutions like CaaS or PaaS. This is especially true when you are deploying a microservices architecture. So, will this overlap when deploying on Clever Cloud? Are things even compatible? Yes, it is, and in this post, I will show you some exciting things you can do.</p>
<h3 id="reverse-proxy-and-service-registry">Reverse proxy and Service Registry</h3>
<p>One of the central question raised by our users doing microservices is how do you configure the JHipster Registry (Eureka in Netflix OSS terms). It maintains a registry of all the instances of your architecture services.</p>
<p>Going back to a classic AWS deployment, the typical behavior when you manage several instances of the same application is to deploy those apps to VMs. They all have their own set of IP/port. In their configuration, they have the different addresses of their Eureka server. They will register to that server as an instance of a particular application, identified by that IP/port couple. It is great when you manage your private network and plan to expose everything through an API gateway or your reverse proxy.</p>
<figure>
  <a href="https://cdn.clever-cloud.com/uploads/2021/08/iaas-service-registration.png" rel="noopener noreferrer" target="_blank">
    <img style="width:100%" src="https://cdn.clever-cloud.com/uploads/2021/08/iaas-service-registration.png">
  </a>
  <figcaption>IaaS - Managing VMs - Service registration</figcaption>
</figure>

<p>But as it turns out, this is already managed by PaaS providers like Clever Cloud or Heroku. So you don&#39;t have access to that IP/port for each instance. But it&#39;s OK. Eureka can be configured to support setup like these. You can use the URL given by the proxy instead.</p>
<figure>
  <a href="https://cdn.clever-cloud.com/uploads/2021/08/paas-managing-applications-service-registration.png" rel="noopener noreferrer" target="_blank">
    <img style="width:100%" src="https://cdn.clever-cloud.com/uploads/2021/08/paas-managing-applications-service-registration.png">
  </a>
  <figcaption>PaaS - Managing VMs - Service registration</figcaption>
</figure>

<p>The only issue with that is that you won’t be able to go on one specific instance since you go through the proxy. In some cases, this can become a problem. Like with the JHipster Registry.</p>
<h4 id="jhipster-registrys-statefulness-exception">JHipster Registry’s Statefulness Exception</h4>
<p>Let’s say you want to scale out your registry for failover. It seems like a legitimate thing to do. If you only have one JHipster registry instance and it’s down, you lose your service registry(Eureka) and your configuration server (Spring Cloud config, embedded in the JHipster registry, more on that later). It means your architecture is down. So you want to have several instances of the registry in case one goes down.</p>
<p>Something also worth to know is that the service registry(Eureka in Netflix OSS terms) stores things in memory. You cannot store the information in a shared database that all your instances could use. It makes the registry stateful. They all have their datastore(their RAM). So you need to have your services register themselves to each registry instance to make sure they always have the same copy of the data.</p>
<p>If you were to use the URL of your JHipster registry application given by a PaaS, so behind a reverse proxy, the service would register to a random. It depends on the PaaS load balancer. In that case, you have no guarantee that your service will have registered itself with every instance of the registry.</p>
<p>If you use an IaaS, you will have all the IP/PORT couples at your disposal to make sure each service can register to each registry.</p>
<p>If you use PaaS autoscaling, each instance is hidden behind a reverse proxy with only one URL, and you have no way to have the clients register themselves to each instance (Now you could use sticky sessions, but you would have to craft the sticky session cookie manually, and this is cumbersome). So it is much simpler to create one application with its URL instead.</p>
<p>In that case, what you need to do is deploy an application for each instance you would like. That way you get a different URL for each, and you ask all your services to register to each URL.</p>
<h3 id="configuration-management">Configuration Management</h3>
<p>Another feature that comes up with most Platform as a Service and overlap with JHipster or the Netflix OSS stack is configuration management. In JHipster case, the registry is also a Spring Cloud Config server. As such it supports different backends to store your configuration: Git, native filesystem, Databases or Vault. By default JHipster uses git. Using GitHub, in particular, is excellent as you can benefit from their WebHooks. Each time you change the configuration, your server will receive the updates and broadcast it through an AMQP system with Spring Cloud Bus if you have configured one. So, you are sure that all your architecture is up to date with the latest configuration.</p>
<p>And of course, Spring Cloud Config also supports environment variables which is what we offer by default with Clever Cloud, with some exciting orchestration tricks.</p>
<p>The PaaS granularity level being Application(as oppose to VMs in IaaS), you can assign environment variables to Applications. All these variables are injected into all the instances of the app when we boot the VM. Applications can also expose some variables for others. How does it work?</p>
<p>Applications or add-ons can be linked together. It merely means that their exposed variables will be injected into the linked app. And the great thing about this is that when an exposed variable is modified, all the linked apps are restarted in blue/green so without service interruption. So you get an up to date architecture without having to setup Webhooks and an AMQP with Spring Cloud Bus :) Note that Clever Cloud also offers a configuration provider addon that lets you define configuration without having to tied it to an app. It is a bit like a configuration server. And it works exactly like described above. It&#39;s mostly here to make a semantic distinction.</p>
<h3 id="conclusion">Conclusion</h3>
<p>JHipster and the Netflix OSS do provide some overlap to what PaaS can offer. But fear not because it’s still compatible and can benefit from the high-level feature supplied by PaaS. In the next post, I will show you all the steps to deploy this on Clever Cloud :)</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introducing Service Dependencies</title>
		<link>https://stagingv6.cleverapps.io/blog/features/2016/06/23/introducing-service-dependencies/</link>
		
		<dc:creator><![CDATA[Clement Delafargue]]></dc:creator>
		<pubDate>Thu, 23 Jun 2016 17:15:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[addons]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[microservices]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2016/06/23/introducing-service-dependencies/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p><p>At Clever Cloud, we&#39;ve started using microservices before it was cool&#8482;. Today we&#39;re excited to launch service dependencies, to simplify microservices management.  <span id="more-2867"></span></p>
<h2 id="the-microservices-graph">The microservices graph</h2>
<p>When you ditch your monolith and go full microservices, your application becomes a graph of loosely coupled microservices.</p>
<p>For instance, an typical service API can depend on:</p>
<ul>
<li>an auth microservice to validate requests</li>
<li>a notification gateway to send notification</li>
</ul>
<p>In turn, the notification gateway can depend on:</p>
<ul>
<li>an email gateway</li>
<li>a push notification gateway</li>
</ul>
<p>So you have a graph of services, each with its own lifecycle (eg dev, staging, production). So if you want to use a different email gateway from your staging API, you need to have in turn a specific notification gateway. To make a test in one project, you need to modifiy code in all its dependency chain. Uncool</p>
<h2 id="service-dependencies">Service dependencies</h2>
<p>On Clever Cloud, you already know how to link applications to their dependencies on the fly, without touching code or fidling with config files: by linking an addon to your application, you let the addon inject its location and credentials so you don&#39;t have to handle it yourself. Service dependencies is just a generalization of the addon mechanism to any application.</p>
<h3 id="link-applications">Link applications</h3>
<p>You can add dependencies to an application either from the CLI:</p>
<pre><code class="language-bash">  clever service --alias api link-app notification-gateway
</code></pre>
<p>or from the console:</p>
<p><img src="https://www2.cleverapps.io/app/uploads/2021/08/service-dependencies.png" alt=""></p>
<h3 id="exposed-configuration">Exposed configuration</h3>
<p>With addons, the exposed configuration is always the same. With applications, you can declare the configuration you want to expose to your dependents. To make an app expose configuration, you can either do it from the CLI:</p>
<pre><code class="language-bash">  clever exposed-config --alias api set API_DOMAIN_NAME api.example.com
</code></pre>
<p>or from the console:</p>
<p><img src="https://www2.cleverapps.io/app/uploads/2021/08/exposed-config.png" alt=""></p>
<p>Note: every time you update the exposed configuration, dependent applications will be automatically redeployed.</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/service-deps-banner-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><p>At Clever Cloud, we&#39;ve started using microservices before it was cool&#8482;. Today we&#39;re excited to launch service dependencies, to simplify microservices management.  <span id="more-2867"></span></p>
<h2 id="the-microservices-graph">The microservices graph</h2>
<p>When you ditch your monolith and go full microservices, your application becomes a graph of loosely coupled microservices.</p>
<p>For instance, an typical service API can depend on:</p>
<ul>
<li>an auth microservice to validate requests</li>
<li>a notification gateway to send notification</li>
</ul>
<p>In turn, the notification gateway can depend on:</p>
<ul>
<li>an email gateway</li>
<li>a push notification gateway</li>
</ul>
<p>So you have a graph of services, each with its own lifecycle (eg dev, staging, production). So if you want to use a different email gateway from your staging API, you need to have in turn a specific notification gateway. To make a test in one project, you need to modifiy code in all its dependency chain. Uncool</p>
<h2 id="service-dependencies">Service dependencies</h2>
<p>On Clever Cloud, you already know how to link applications to their dependencies on the fly, without touching code or fidling with config files: by linking an addon to your application, you let the addon inject its location and credentials so you don&#39;t have to handle it yourself. Service dependencies is just a generalization of the addon mechanism to any application.</p>
<h3 id="link-applications">Link applications</h3>
<p>You can add dependencies to an application either from the CLI:</p>
<pre><code class="language-bash">  clever service --alias api link-app notification-gateway
</code></pre>
<p>or from the console:</p>
<p><img src="https://www2.cleverapps.io/app/uploads/2021/08/service-dependencies.png" alt=""></p>
<h3 id="exposed-configuration">Exposed configuration</h3>
<p>With addons, the exposed configuration is always the same. With applications, you can declare the configuration you want to expose to your dependents. To make an app expose configuration, you can either do it from the CLI:</p>
<pre><code class="language-bash">  clever exposed-config --alias api set API_DOMAIN_NAME api.example.com
</code></pre>
<p>or from the console:</p>
<p><img src="https://www2.cleverapps.io/app/uploads/2021/08/exposed-config.png" alt=""></p>
<p>Note: every time you update the exposed configuration, dependent applications will be automatically redeployed.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introducing Trace, a new add-on</title>
		<link>https://stagingv6.cleverapps.io/blog/features/2016/06/13/introducing-trace/</link>
		
		<dc:creator><![CDATA[Clément Nivolle]]></dc:creator>
		<pubDate>Mon, 13 Jun 2016 15:12:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[trace]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2016/06/13/introducing-trace/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><p>If you’re used to code micro-services with Node.js, you may be familiar with the frustration of performance issues, finding the root cause of an error and hunting down memory leaks.</p>
<p>That’s why services like <a href="https://trace.risingstack.com/?ref=clevercloud">Trace</a> are here. Trace is a Node.js performance monitoring tool which helps you to understand how your application behaves and lets you find performance bottlenecks with ease.</p>
<span id="more-2866"></span>

<p><strong>Today we are launching Trace as an add-on for Clever Cloud, which can be tried out for free until July 1st without any restrictions.</strong></p>
<center>
  <figure>
    <a href="https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_view_trace_by_risingstack-1462456415477.png">
      <img style="width:49%" src = "https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_view_trace_by_risingstack-1462456415477.png"></a>
    <a href=""https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_tracing_detailed_error_message-1462456463507.png"">
      <img style="width:49%" src = "https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_tracing_detailed_error_message-1462456463507.png">
    </a>
  </figure>
</center>

<h3 id="distributed-tracing">Distributed tracing</h3>
<p><strong>Trace comes with a unique feature called distributed tracing: It visualizes whole transactions (request-chains) in your microservices architecture and looks for errors.</strong></p>
<p>This means that you can see on an interactive timeline:</p>
<ul>
<li>which services were taking part in a transaction,</li>
<li>how big were the response network delays,</li>
<li>how long did a service handled a request,</li>
<li>where and when the errors happened in that transaction.</li>
</ul>
<p>Trace connects services taking part in a request by attaching correlation IDs to them. This way you can visualize the exact data-flow of faulty transactions, see the dependencies between your microservices, look for bad status codes and localize ongoing issues.</p>
<h3 id="service-mapping">Service mapping</h3>
<p><strong>Trace provides you with a dynamic service map, which is automatically generated based on how the services in your system communicate with each other, or with your databases and external APIs.</strong></p>
<p>Thanks to this, you can see how your application really looks like, and understand what makes it to slow down. The service map also allows you to find out how many requests your services handle and how big are their response times.</p>
<center>
  <figure class="col-md-12">
    <img style="width: 100%" src = "https://www2.cleverapps.io/app/uploads/2021/08/Distributed_transaction_tracing_with_service_topology_map_trace_by_risingstack-1462456507669.png"></center>
  </figure>
</center>

<h3 id="getting-started">Getting started</h3>
<p>Adding Trace to your services is possible with just a couple lines of code, and it can be installed and used in under two minutes. There is a tutorial for the installation on Trace’s documentation: <a href="http://trace-docs.risingstack.com/docs/clever-cloud">http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace</a></p>
<h4 id="some-use-cases">Some Use cases</h4>
<p>Using Trace to fix crashing Node.js apps: <a href="http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace">http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace</a></p>
<p>Using Trace to investigate slow Node.js apps: <a href="http://trace-docs.risingstack.com/docs/investigate-slow-nodejs-apps">http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace</a></p>
]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2021/08/trace-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><p>If you’re used to code micro-services with Node.js, you may be familiar with the frustration of performance issues, finding the root cause of an error and hunting down memory leaks.</p>
<p>That’s why services like <a href="https://trace.risingstack.com/?ref=clevercloud">Trace</a> are here. Trace is a Node.js performance monitoring tool which helps you to understand how your application behaves and lets you find performance bottlenecks with ease.</p>
<span id="more-2866"></span>

<p><strong>Today we are launching Trace as an add-on for Clever Cloud, which can be tried out for free until July 1st without any restrictions.</strong></p>
<center>
  <figure>
    <a href="https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_view_trace_by_risingstack-1462456415477.png">
      <img style="width:49%" src = "https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_view_trace_by_risingstack-1462456415477.png"></a>
    <a href=""https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_tracing_detailed_error_message-1462456463507.png"">
      <img style="width:49%" src = "https://www2.cleverapps.io/app/uploads/2021/08/distributed_transaction_tracing_detailed_error_message-1462456463507.png">
    </a>
  </figure>
</center>

<h3 id="distributed-tracing">Distributed tracing</h3>
<p><strong>Trace comes with a unique feature called distributed tracing: It visualizes whole transactions (request-chains) in your microservices architecture and looks for errors.</strong></p>
<p>This means that you can see on an interactive timeline:</p>
<ul>
<li>which services were taking part in a transaction,</li>
<li>how big were the response network delays,</li>
<li>how long did a service handled a request,</li>
<li>where and when the errors happened in that transaction.</li>
</ul>
<p>Trace connects services taking part in a request by attaching correlation IDs to them. This way you can visualize the exact data-flow of faulty transactions, see the dependencies between your microservices, look for bad status codes and localize ongoing issues.</p>
<h3 id="service-mapping">Service mapping</h3>
<p><strong>Trace provides you with a dynamic service map, which is automatically generated based on how the services in your system communicate with each other, or with your databases and external APIs.</strong></p>
<p>Thanks to this, you can see how your application really looks like, and understand what makes it to slow down. The service map also allows you to find out how many requests your services handle and how big are their response times.</p>
<center>
  <figure class="col-md-12">
    <img style="width: 100%" src = "https://www2.cleverapps.io/app/uploads/2021/08/Distributed_transaction_tracing_with_service_topology_map_trace_by_risingstack-1462456507669.png"></center>
  </figure>
</center>

<h3 id="getting-started">Getting started</h3>
<p>Adding Trace to your services is possible with just a couple lines of code, and it can be installed and used in under two minutes. There is a tutorial for the installation on Trace’s documentation: <a href="http://trace-docs.risingstack.com/docs/clever-cloud">http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace</a></p>
<h4 id="some-use-cases">Some Use cases</h4>
<p>Using Trace to fix crashing Node.js apps: <a href="http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace">http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace</a></p>
<p>Using Trace to investigate slow Node.js apps: <a href="http://trace-docs.risingstack.com/docs/investigate-slow-nodejs-apps">http://trace-docs.risingstack.com/docs/fix-crashing-nodejs-applications-with-trace</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
