<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joan Rodriguez</title>
    <description>The latest articles on DEV Community by Joan Rodriguez (@jghidalgo).</description>
    <link>https://dev.to/jghidalgo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1114050%2F81dbdf3e-0e1a-44e5-bfcc-4035cb825633.png</url>
      <title>DEV Community: Joan Rodriguez</title>
      <link>https://dev.to/jghidalgo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jghidalgo"/>
    <language>en</language>
    <item>
      <title>Scaling to Infinity: Mastering Hyperscale AWS Serverless Architecture with Lambdas (Part 1)</title>
      <dc:creator>Joan Rodriguez</dc:creator>
      <pubDate>Wed, 25 Oct 2023 03:55:13 +0000</pubDate>
      <link>https://dev.to/jghidalgo/scaling-to-infinity-mastering-hyperscale-aws-serverless-architecture-with-lambdas-part-1-cmh</link>
      <guid>https://dev.to/jghidalgo/scaling-to-infinity-mastering-hyperscale-aws-serverless-architecture-with-lambdas-part-1-cmh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the ever-evolving world of cloud computing, the concept of hyperscale has become increasingly important. Organizations are constantly seeking ways to scale their applications quickly and efficiently to meet growing demands. Amazon Web Services (AWS) has been a pioneer in this field, and one of their flagship serverless services, AWS Lambda, plays a pivotal role in enabling hyperscale solutions.&lt;/p&gt;

&lt;p&gt;In this blog post, we’ll explore how AWS Lambda can be a game-changer for building hyperscale serverless architectures. We’ll dive into the core concepts, benefits, best practices, and real-world use cases for Lambdas in hyperscale scenarios. This is a daily discussion at Dealer Automation Technologies and I would like to share with my team this post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quotas and behaviors:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When using Cloud services we need to understand how these services behave, the default quotas and behaviors before the big burst of traffic comes to ensure your event scales seamlessly, this is a good point to start this journey.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3ek0LDNo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3svmi6nrikszmub63ium.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ek0LDNo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3svmi6nrikszmub63ium.png" alt="Image description" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's take a look at this simple diagram, first, we have Amazon CloudFront within distribution pointing to S3, but I am going to talk about it in another post, and then we have API gateway, if you’re not familiar with this service, wait for future post, but I would like to mention the capabilities in terms of scalability; API Gateway is an always-on, always scaled out multi-tenant services.&lt;/p&gt;

&lt;p&gt;Burst from 0 to 100s of thousands of requests per second (RPS) with no advanced notice and no burst quota.&lt;br&gt;
Default throughput: 10000 RPS (Can be raised to handle the most demanding workloads).&lt;br&gt;
Max integration timeout: 29 (REST API) or 30 (HTTP API) seconds.&lt;br&gt;
Payload size: 10 MB.&lt;br&gt;
If you want to see more: &lt;a href="https://go.aws/3qi1F7Y"&gt;https://go.aws/3qi1F7Y&lt;/a&gt;&lt;br&gt;
API Gateway is a great service for Hyperscale workloads, but let's concentrate on the main services of this post. No matter what kind of API we are using GraphQL or API Gateway we need to get the response back from the integration, we have a timeout that's roughly 30 seconds depending on the type of API and we have a max payload size of 10 MB. So with AWS Lambda, we have this concept called concurrency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lambda concurrency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A single Lambda execution environment( Micro virtual machines or micro VMs) can only process a single event at a time&lt;/p&gt;

&lt;p&gt;Regardless of event source or invoke type.&lt;br&gt;
Batches pulled from SQS or DynamoDB Streams count as a single event.&lt;br&gt;
Concurrent requests necessitate the creation of new execution environments. It’s essential to understand that every incoming concurrent request triggers the instantiation of a micro VM. If there isn’t a pre-initialized micro VM with your code ready to execute, a new one is spun up almost instantly and that's what we would call an “execution environment”. The total number of execution environments processing requests at a given time is this concept called concurrence.&lt;/p&gt;

&lt;p&gt;Now let's take a look quickly this concept with pictures because it's important for planning our hyperscale workload.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--32tB2mQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/49o2ua26tydkiuu4jk8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--32tB2mQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/49o2ua26tydkiuu4jk8i.png" alt="Image description" width="800" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown in the picture is an example request coming in, and in this case, we’ll just call it function X, but in the process of invoking function X, we don't have any existing micro VM to go, so what the lambda services do is it says: are there any hot on deck? If the answer is no, then we’re going to spin up a new execution environment, is this the concept called “Cold Starts” Anytime we spin up from scratch a whole new micro VM, we pull our code down to it, we initialize the runtime of the language, for example, NodeJs or Python (my favorites), and then we initialize our code, anything outside of the handler, etc. All of that time until the point where we enter the handler of our function is what we call a Cold Start, one important point here is once we actually enter the handler of the function, that is where execution begins in this case, and the entire time until that execution is finished, this execution environment is dedicated to that request. If we have more requests come in let's say another comes in, as before we had no available capacity hot on deck (no micro VMs ready), so we spin up one more micro VMs, which means we have more Cold Starts, now the two or more environments are busy, and we get more requests coming in, but because all of the 2 were still busy processing those initial events when 3 and 4 come in, we get another two execution environments spun up and effectively, we’ve reached what we could call now 4 concurrencies, ‘couse we have 4 parallel things processing requests simultaneously. Now what changes here and an important behavior to understand is when the first request finishes, we don't just get rid of this execution environment, we reuse these environments by default until either a period of inactivity has occurred, so when we get a request 5 we actually reuse the first execution environment and we can jump directly into the handler (No cold start), this is what we call a warm start, see this explanation in the next picture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DWFHZyZo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mn7mwu5esk6qst1zsxr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DWFHZyZo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mn7mwu5esk6qst1zsxr3.png" alt="Image description" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we have a fairly steady state, we’re gonna have a lot more warm starts than cold starts. After this, I would like to show the Lambda scaling quotas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Account concurrency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By default, Lambda provides your account with a total concurrency limit of 1,000 across all functions in a region. To support your specific account needs, you can request a quota increase and configure function-level concurrency controls so that your critical functions don’t experience throttling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burst concurrency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maximum increase in concurrency for an initial bust of traffic&lt;/p&gt;

&lt;p&gt;3000 in US East(N. Virginia), US West (Oregon), and Europe (Ireland).&lt;br&gt;
1000 in US East (Ohio), Asia Pacific (Tokyo), and Europe ( Frankfurt).&lt;br&gt;
500 in all other Regions.&lt;br&gt;
After that, functions can scale by 500 concurrency per minute.&lt;/p&gt;

&lt;p&gt;Maybe burst concurrency sounds new, but in a single minute’s time, how much can we scale up our concurrent executions by region.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kpkojgVq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuax9ukq38njvpv4cmqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kpkojgVq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuax9ukq38njvpv4cmqt.png" alt="Image description" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we want to raise the account concurrency limit in advance of our event and if this bust limit is a concern, we need to use something called provision concurrency (a number of execution environments that we wanna have hot on deck at all times).&lt;/p&gt;

&lt;p&gt;I will explain in the second part of this part the best practices if we want to optimize lambda function performance. Thanks and see you in the next lecture.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>lambda</category>
      <category>serverless</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Deploy Jenkins on AWS in less than 5min</title>
      <dc:creator>Joan Rodriguez</dc:creator>
      <pubDate>Sat, 21 Oct 2023 04:58:03 +0000</pubDate>
      <link>https://dev.to/jghidalgo/deploy-jenkins-on-aws-in-less-than-5min-2mdo</link>
      <guid>https://dev.to/jghidalgo/deploy-jenkins-on-aws-in-less-than-5min-2mdo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Are you looking to set up Jenkins, the popular open-source automation server, on Amazon Web Services (AWS) quickly and effortlessly? In this guide, we'll walk you through the steps to deploy Jenkins on AWS in less than 5 minutes, enabling you to streamline your continuous integration and continuous delivery (CI/CD) pipelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we begin, make sure you have the following prerequisites in place:&lt;/p&gt;

&lt;p&gt;An AWS account.&lt;br&gt;
Familiarity with AWS services.&lt;br&gt;
Basic knowledge of Jenkins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p_e297C6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3t96ud4abxsefumgi19.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p_e297C6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3t96ud4abxsefumgi19.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a key pair:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Amazon EC2 console at &lt;a href="https://console.aws.amazon.com/ec2/"&gt;https://console.aws.amazon.com/ec2/&lt;/a&gt; and sign in.&lt;/li&gt;
&lt;li&gt;In the navigation pane, under NETWORK &amp;amp; SECURITY, select Key Pairs.&lt;/li&gt;
&lt;li&gt;Select Create key pair.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z3r0FqjH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ho735grgo2s1xw4g4z61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z3r0FqjH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ho735grgo2s1xw4g4z61.png" alt="Image description" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Name, enter a descriptive name for the key pair. Amazon EC2 associates the public key with the name that you specify as the key name. A key name can include up to 255 ASCII characters. It cannot include leading or trailing spaces.&lt;/li&gt;
&lt;li&gt;For File format, select the format in which to save the private key.&lt;/li&gt;
&lt;li&gt;For OpenSSH compatibility, select pem.&lt;/li&gt;
&lt;li&gt;For PuTTY compatibility, select ppk.&lt;/li&gt;
&lt;li&gt;Select Create key pair.&lt;/li&gt;
&lt;li&gt;The private key file downloads automatically. The base file name is the name you specified as the name of your key pair, and the file name extension is determined by the file format you chose. Save the private key file in a safe place.&lt;/li&gt;
&lt;li&gt;This is the only chance for you to save the private key file.&lt;/li&gt;
&lt;li&gt;If you use an SSH client on a macOS or Linux computer to connect to your Linux instance, run the following command to set the permissions of your private key file so that only you can read it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create a security group:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create and configure your security group:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decide who may access your instance. For example, a single computer or all trusted computers on a network. For this tutorial, you can use the public IP address of your computer.&lt;/li&gt;
&lt;li&gt;To find your IP address, use the check IP service tools on the Internet.&lt;/li&gt;
&lt;li&gt;This is unsafe for production environments because it allows everyone to access your instance using SSH.&lt;/li&gt;
&lt;li&gt;Sign in to the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Open the Amazon EC2 console by selecting EC2 under Compute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gQQ-kW2x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4z18wlu5qr2pvpa5qc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gQQ-kW2x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4z18wlu5qr2pvpa5qc5.png" alt="Image description" width="800" height="968"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the left-hand navigation bar, select Security Groups, and then select Create Security Group.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IZJJJdde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ndh9gl96iaqd9yx7x59n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IZJJJdde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ndh9gl96iaqd9yx7x59n.png" alt="Image description" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Security group name, enter [JenkinsWebServerSG] or any preferred name of your choice, and provide a description.&lt;/li&gt;
&lt;li&gt;Select your VPC from the list. You can use the default VPC.&lt;/li&gt;
&lt;li&gt;On the Inbound tab, add the rules as follows:&lt;/li&gt;
&lt;li&gt;Select Add Rule, and then select SSH from the Type list.&lt;/li&gt;
&lt;li&gt;Under Source, select Custom, and in the text box, enter the IP address from step 1, followed by /32 indicating a single IP Address.&lt;/li&gt;
&lt;li&gt;Select Add Rule, and then select HTTP from the Type list.&lt;/li&gt;
&lt;li&gt;Select Add Rule, and then select Custom TCP Rule from the Type list.&lt;/li&gt;
&lt;li&gt;Under Port Range, enter 8080.&lt;/li&gt;
&lt;li&gt;Select Create.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Launch an EC2 Instance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Amazon EC2 console by selecting EC2 under Compute.&lt;/li&gt;
&lt;li&gt;From the Amazon EC2 dashboard, select Launch Instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O5vRath2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1byvnmxeacpe6lb7clg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O5vRath2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1byvnmxeacpe6lb7clg.png" alt="Image description" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Choose an Amazon Machine Image (AMI) page displays a list of basic configurations called Amazon Machine Images (AMIs) that serve as templates for your instance. Select the HVM edition of the Amazon Linux AMI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UFSRsvlv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ws6650uqzo7uxsoq9og5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UFSRsvlv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ws6650uqzo7uxsoq9og5.png" alt="Image description" width="800" height="708"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scroll down and select the key pair you created in the "Create a key pair" section above or any existing key pair you intend to use.&lt;/li&gt;
&lt;li&gt;Select Select an existing security group.&lt;/li&gt;
&lt;li&gt;Select the JenkingsWebServerSG security group that you created.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Launch Instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the left-hand navigation bar, choose Instances to view the status of your instance. Initially, the status of your instance is pending. After the status changes to running, your instance is ready for use.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K05lYDXP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0l7dvb2g4maki5ezql8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K05lYDXP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0l7dvb2g4maki5ezql8.png" alt="Image description" width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Allocate Elastic IP address:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the EC2 Dashboard, navigate to the "Elastic IPs" section on the left-hand side.&lt;/li&gt;
&lt;li&gt;Click the "Allocate new address" button.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A new Elastic IP address will be created and listed in the table below.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the EC2 Dashboard, click on "Instances" in the left-hand navigation pane.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the EC2 instance to which you want to associate the Elastic IP address.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the "Actions" button at the top, then choose "Associate IP address."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the "Associate Elastic IP address" dialog, select the Elastic IP address you just allocated from the dropdown list.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the instance to associate it with from the "Instance" dropdown list.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can also specify a private IP address (optional), which can be useful in cases where the instance has multiple network interfaces.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the "Associate" button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the association is complete, the Elastic IP address will be associated with your selected EC2 instance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the easy part, at this point, I only spent 3 minutes, let's do the rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Install Jenkins:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connecting to your Linux instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mSTskf2k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pevsa8qddq1i2ha5pl6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mSTskf2k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pevsa8qddq1i2ha5pl6n.png" alt="Image description" width="800" height="29"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eBgsErtB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4uwcj4bs6g5lc9m8rs11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eBgsErtB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4uwcj4bs6g5lc9m8rs11.png" alt="Image description" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the console, Add the Jenkins repo using the following command:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r13k4bu0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cuan9ktxdmzzopr5njcm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r13k4bu0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cuan9ktxdmzzopr5njcm.png" alt="Image description" width="758" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import a key file from Jenkins-CI to enable installation from the package:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wm_UBsT5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asyv4z5bwqwbozkupt9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wm_UBsT5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asyv4z5bwqwbozkupt9v.png" alt="Image description" width="800" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Java (Amazon Linux 2023):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--st9WZibw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c98wivtg38koi9hxbbxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--st9WZibw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c98wivtg38koi9hxbbxg.png" alt="Image description" width="506" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Jenkins:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eNagY8Rj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/233k837vm1dsi9bueo9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eNagY8Rj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/233k837vm1dsi9bueo9v.png" alt="Image description" width="398" height="42"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable the Jenkins service to start at boot:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KPi1Hg15--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qb7godukx11225gwxvvs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KPi1Hg15--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qb7godukx11225gwxvvs.png" alt="Image description" width="440" height="45"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start Jenkins as a service:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CNdIaUbC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ehsgly97w1rxh0mihv2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CNdIaUbC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ehsgly97w1rxh0mihv2v.png" alt="Image description" width="372" height="43"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect to http://:8080 from your browser. You will be able to access Jenkins through its management interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mXtWDVBL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02jpdtw5lph5ucskyez6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mXtWDVBL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02jpdtw5lph5ucskyez6.png" alt="Image description" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In less than 5 minutes, you have successfully deployed Jenkins on AWS. Now, you can use Jenkins to automate your software development processes, including building, testing, and deploying your applications. Explore Jenkins plugins, set up jobs, and integrate them with your version control system to make the most of this powerful tool.&lt;/p&gt;

&lt;p&gt;Now, you're ready to embark on your journey of automated, efficient CI/CD with Jenkins on AWS. Happy automating!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remember to secure your Jenkins instance by configuring security settings and using strong authentication.&lt;br&gt;
Regularly back up your Jenkins configuration to prevent data loss.&lt;br&gt;
Explore Jenkins plugins to extend their functionality to suit your specific needs.&lt;/p&gt;

&lt;p&gt;Keep learning, and keep working hard. The Journey is the Reward.&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>aws</category>
      <category>jenkins</category>
    </item>
  </channel>
</rss>
