<?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: Ilaibavati</title>
    <description>The latest articles on DEV Community by Ilaibavati (@ilaibavati).</description>
    <link>https://dev.to/ilaibavati</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%2F183542%2F4f8ac06d-9c6f-4544-a727-82cf1e6f3b92.jpg</url>
      <title>DEV Community: Ilaibavati</title>
      <link>https://dev.to/ilaibavati</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ilaibavati"/>
    <language>en</language>
    <item>
      <title>How to Build Responsive Apps in React Native</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Thu, 01 Apr 2021 13:40:06 +0000</pubDate>
      <link>https://dev.to/ilaibavati/how-to-build-responsive-apps-in-react-native-4gfg</link>
      <guid>https://dev.to/ilaibavati/how-to-build-responsive-apps-in-react-native-4gfg</guid>
      <description>&lt;p&gt;React Native is a JavaScript (JS) framework that you can use to develop mobile applications. It supports building iOS and multi-platform Android apps from native user interface (UI) elements. React Native is based on Babel transformers and the JavaScriptCore runtime. React Native has &lt;a href="https://www.reactnative.guide/11-devops/11.0-devops.html"&gt;built-in support for continuous deployment&lt;/a&gt; and &lt;a href="https://cloud.netapp.com/devops"&gt;DevOps practices&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;React Native was created by Facebook during an internal hackathon in 2013 and made publicly available in 2015. Since its release, it has been widely used by developers wishing to build native mobile apps and functional UIs. In this article, you’ll learn how to build responsive apps in react native, including an example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Methods for Making React Native Apps Responsive
&lt;/h2&gt;

&lt;p&gt;Although React Native does not include support for media queries, there are still several ways you can build responsive apps. Below are the most common methods to &lt;a href="https://cloudinary.com/blog/image_optimization_for_websites_beautiful_pages_that_load_quickly"&gt;optimize images&lt;/a&gt;, videos, and web elements when building responsive apps with React Native.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexbox
&lt;/h3&gt;

&lt;p&gt;Flexbox is a CSS module you can use to control a two-dimensional layout, similar to CSS Grid Layout. It includes a variety of properties you can use to automatically adapt your layout proportionally to various screen sizes. &lt;/p&gt;

&lt;p&gt;There are several important properties to know if you want to use flexbox effectively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;flex&lt;/em&gt;—defines how your elements fill the available space. This number is proportional to other flex elements in the same container.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;flexBasis&lt;/em&gt;—defines the default size of an element along the main axis.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;flexGrow&lt;/em&gt;—defines how extra space should be assigned to elements within a container.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;flexShrink&lt;/em&gt;—defines how elements should shrink to prevent overflowing a container.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To use these properties, you assign the properties to the elements you want to define, and a number to each property itself. Assigning a 0 makes the dimensions static. Assigning a floating-point number larger than 0 adapts the element according to the property the number is assigned to. For example, imagine two elements in the same container; element A has &lt;em&gt;flex: 2&lt;/em&gt; and element B has &lt;em&gt;flex: 3&lt;/em&gt;. Element A takes up 2/5ths of the container and B takes 3/5ths. &lt;/p&gt;

&lt;p&gt;Other important properties to know include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;flexDirection&lt;/em&gt;—defines the direction in which elements are flexed; either row or column. The default setting is a column, because mobile devices are typically elongated in shape. &lt;/li&gt;
&lt;li&gt;
&lt;em&gt;justifyContent&lt;/em&gt;—defines how elements are spread within a container along the main axis. &lt;/li&gt;
&lt;li&gt;
&lt;em&gt;alignItems&lt;/em&gt;—defines how elements are spread on the cross-axis. This property works similarly to justifyContent but along the perpendicular axis to the main axis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  aspectRatio
&lt;/h3&gt;

&lt;p&gt;Another property you can use is &lt;em&gt;aspectRatio&lt;/em&gt;, which controls the size of undefined dimensions of an element. For example, if only the &lt;em&gt;height&lt;/em&gt; is specified, &lt;em&gt;aspectRatio&lt;/em&gt; ensures that the width scales accordingly. This property is exclusive to React Native and is not used in CSS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Screen Dimensions
&lt;/h3&gt;

&lt;p&gt;When designing responsive sites, you often need to create different layouts for different device types or screen dimensions. Since React Native does not support media queries, this can be a challenge. However, you can access this same information using the Dimensions API.&lt;/p&gt;

&lt;p&gt;You can use this API as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Dimensions } from 'react-native';

const {width, height} = Dimensions.get(‘window');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, if you are using React Native 0.61:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const {width, height} = useWindowDimensions();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you obtain your dimensions, you can set breakpoints defining when your layout should change. These changes can include different media sizes, layout configurations, or behaviors.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Text, View, Dimensions } from 'react-native';

class App extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      width: Dimensions.get('window').width
    };
  }

  render() {
    return (
     &amp;lt;View&amp;gt;
       {this.state.width &amp;lt; 320 ? &amp;lt;Text&amp;gt;width of the past&amp;lt;/Text&amp;gt; : &amp;lt;Text&amp;gt;how big is big enough?&amp;lt;/Text&amp;gt;}
     &amp;lt;/View&amp;gt;
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  react-native-responsive-screen Library
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;react-native-responsive-screen&lt;/em&gt; is a library you can use to code UI elements responsively. It includes methods for responsive sizing, automatic re-rendering, and screen orientation detection. &lt;/p&gt;

&lt;p&gt;To use &lt;em&gt;react-native-responsive-screen&lt;/em&gt; you need to perform the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the package with &lt;em&gt;npm install&lt;/em&gt; &lt;em&gt;react-native-responsive-screen --save&lt;/em&gt;. When your application runs, it will automatically detect the client screen width and height.&lt;/li&gt;
&lt;li&gt;Use the two values &lt;em&gt;widthPercentageToDP()&lt;/em&gt; and &lt;em&gt;heightPercentageToDP()&lt;/em&gt; with a string percentage (i.e ‘50%’) in the brackets as your respective width or height values. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When using this library, you can use it in combination with flexbox for greater control. Also, it is suggested that you start with the largest screen you want to support and work your way down. This helps prevent forgetting to add responsive values for all of your type number properties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Realistic Example: Building a Chat App
&lt;/h2&gt;

&lt;p&gt;Building a chat app is a simple way to practice using the responsive methods covered above. This example is excerpted from a full tutorial created by &lt;a href="https://heartbeat.fritz.ai/handling-responsive-layouts-in-react-native-apps-1494b3f85984?gi=c6ac096b9802"&gt;Akshay Kadam&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start by installing the &lt;em&gt;react-native-responsive-screen&lt;/em&gt; library.&lt;/li&gt;
&lt;li&gt;Download and store your graphic elements in your &lt;em&gt;assets/&lt;/em&gt; folder. In this case, you’re using &lt;a href="https://github.com/deadcoder0904/responsive-react-native-layout/blob/master/assets/pikachu_heart_eyes.png"&gt;pikachu_heart_eyes.png&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In your App.js file, add the following code. 
Note that &lt;em&gt;SafeAreaView&lt;/em&gt; ensures that content stays within the boundaries of the device and &lt;em&gt;ScrollView&lt;/em&gt; enables you to scroll to overflow content.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import{ Image, SafeAreaView, ScrollView, StyleSheet, Text } from 'react-native'
import {
 heightPercentageToDP as hp,
 widthPercentageToDP as wp,
} from 'react-native-responsive-screen'

export default function App(){
 return (
    &amp;lt;SafeAreaView style={styles.container}&amp;gt;
      &amp;lt;ScrollView&amp;gt;
        &amp;lt;Image
        source={require('./assets/pikachu_heart_eyes.png')}
        style={styles.img}
        /&amp;gt;
      &amp;lt;/ScrollView&amp;gt;
    &amp;lt;/SafeAreaView&amp;gt;
 )
}

const styles = StyleSheet.create({
  container:{
    flex: 1,
    backgroundColor: 'black',
  },
  img:{
    width: wp('70%'),
    height: hp('30%'),
    alignSelf: 'flex-end',
    resizeMode: 'contain',
  },
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.Add example chats as test content. An example of content is found below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const chats = [
 { name: 'Prem', text: 'Hey, what’s up?' },
 { name: 'Pooja', text: 'Nothing, just studying. Why?' },
 { name: 'Prem', text: 'I just won tickets to a concert and have no one to go with...' },
 { name: 'Prem', text: 'You wanna go?' },
 { name: 'Pooja', text: 'Yeah! ' },
 { name: 'Prem', text: 'Perfect! It’s at 8 tonight' },
 { name: 'Pooja', text: 'Great!! I’ll meet you at your house at 7' },
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5.Include the code below your image tag to style the chat content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{chats.map((chat, i) =&amp;gt; (
  &amp;lt;Text
    key={i}
    style={[
      styles.commonChat,
      chat.name === 'Prem' ? styles.rightChat : styles.leftChat,
    ]}
  &amp;gt;
    &amp;lt;Text style={styles.username}&amp;gt;@{chat.name}: &amp;lt;/Text&amp;gt;
    {chat.text}
  &amp;lt;/Text&amp;gt;
))}

commonChat: {
 color: 'white',
 borderRadius: 10,
 borderWidth: 1,
 borderColor: 'white',
 overflow: 'hidden',
 padding: 10,
 margin: 10,
 fontSize: hp('1.6%'),
},
leftChat: {
 backgroundColor: '#c83660',
 alignSelf: 'flex-start',
},
rightChat: {
 backgroundColor: 'rebeccapurple',
 alignSelf: 'flex-end',
},
username: {
 fontWeight: 'bold',
},
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6.Test your app to ensure it scales correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Hopefully, this article helped you understand how you can build responsive apps in react native. While this article reviewed four popular methods, there are many more options, each suited for different projects. As you gain more experience, you’ll figure out your own methods, and the process will become much more familiar and faster.&lt;/p&gt;

</description>
      <category>reactnative</category>
    </item>
    <item>
      <title>CSS Image Overlays: 5 Cool Effects</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Sun, 21 Mar 2021 18:23:59 +0000</pubDate>
      <link>https://dev.to/ilaibavati/css-image-overlays-5-cool-effects-4o3c</link>
      <guid>https://dev.to/ilaibavati/css-image-overlays-5-cool-effects-4o3c</guid>
      <description>&lt;p&gt;You can use CSS for a variety of cool image effects. One of those effects is an overlay—causing an element, typically a colored rectangle or text, to appear over an image. This can be used to achieve a variety of effects, such as highlighting an image or element on hover, displaying image captions, adding live text to an image, and more. In this article I’ll show five ways you can &lt;a href="https://cloudinary.com/blog/css_image_overlay_overlaying_text_and_images_for_visual_effect" rel="noopener noreferrer"&gt;use CSS to apply image overlays&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Transparent Overlays to Images
&lt;/h2&gt;

&lt;p&gt;Color overlays are some of the most popular visual effects you can add to images on your website. When used as a hover effect, transparent color overlays can help users understand what action they are about to perform. &lt;/p&gt;

&lt;p&gt;The main CSS class used here is overlay-effect. This lets you specify transition properties and the overlay color. You can use one of the hover classes to enable the effect, typically by increasing capacity.&lt;/p&gt;

&lt;p&gt;See a code example below—the full code can be seen on &lt;a href="https://www.solodev.com/blog/web-design/how-to-add-transparent-overlays-to-images-with-css.stml" rel="noopener noreferrer"&gt;Scott Madara’s&lt;/a&gt; excellent post. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndcm2441wty9a8rekbzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndcm2441wty9a8rekbzq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
When the user hovers over the blue sky element, a purple overlay color appears:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcoqfh7a2oywrqmu5hzc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcoqfh7a2oywrqmu5hzc7.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overlay Styled Error Message Over Broken Images
&lt;/h2&gt;

&lt;p&gt;Broken images are an eyesore on a website. Because images will inevitably break sometimes, you should have a solution. A nice option is to use CSS and JavaScript to style damaged images and provide custom error messages to your visitors. &lt;/p&gt;

&lt;p&gt;In this CodePen by &lt;a href="https://codepen.io/ire/pen/dMWOQJ" rel="noopener noreferrer"&gt;Ire Aderinokun&lt;/a&gt;, you can see how to overlay text and a fully functional button over an image, to provide a professional experience for users who come across a broken image.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c5un3zqjqepxjgsylra.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c5un3zqjqepxjgsylra.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Zoom on Hover
&lt;/h2&gt;

&lt;p&gt;Zooming in on mouseover is a nice effect that encourages users to click on images. The effect works by enlarging the image when the user hovers over it, but without changing the size of the container. To get this effect you need a wrapper div that bypasses the usual HTML img tag.&lt;/p&gt;

&lt;p&gt;This requires setting the parent element's width and height, and setting overflow to hidden. You can then apply any type of transformation or animation to the inner image.&lt;/p&gt;

&lt;p&gt;See the below code example by &lt;a href="https://www.w3schools.com/howto/howto_css_zoom_hover.asp" rel="noopener noreferrer"&gt;W3Schools&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wh9t2cvn2s6v2kncr9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wh9t2cvn2s6v2kncr9l.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
On hover, the green square is zoomed by 150%:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1v6g5zbh7sspw7al0gjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1v6g5zbh7sspw7al0gjz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Image Board with Fixed Width, Variable Height Elements
&lt;/h2&gt;

&lt;p&gt;You can use CSS Grid and Flexboxes to make layouts responsive, and center elements that were previously difficult to place on a page. In particular, you can use these elements to create a layout like the one used on Pinterest, where each element's vertical position changes according to the vertical position of the element above it.&lt;/p&gt;

&lt;p&gt;You can achieve a Pinterest-like layout using CSS column properties. The first step is to create a div wrapping your elements, and specify two properties: column-width and column-gap. Finally, use the column-break-inside:avoid directive to prevent any elements from splitting across the columns.&lt;/p&gt;

&lt;p&gt;You can see how this works below—see the full code example by &lt;a href="https://silvawebdesigns.com/create-responsive-pinterest-style-layout-css/" rel="noopener noreferrer"&gt;Nathan Da Silva&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sipohynszfx0dxxax6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sipohynszfx0dxxax6u.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Scroll-snap-type
&lt;/h2&gt;

&lt;p&gt;The CSS scroll-snap-type property provides control over the user’s scrolling experience. This can be useful in situations like an image gallery, where you want to allow users to scroll precisely to the next image or item in the gallery. &lt;/p&gt;

&lt;p&gt;scroll-snap-type takes two parameters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The first determines how scroll snapping works—whether you control scrolling across the x or y axes&lt;/li&gt;
&lt;li&gt;The second determines if scrolling is mandatory, meaning the user must scroll to the next scroll point, or proximity, meaning the browser snaps to a nearby scroll point when appropriate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a code example, which forces the user to snap to scroll points along the Y axis.&lt;/p&gt;

&lt;p&gt;.snapping-scroll {&lt;br&gt;
      scroll-snap-type: y mandatory;&lt;br&gt;
  }&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article I covered five CSS image overlay effects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding transparent colored overlay using overlay-effect on hover&lt;/li&gt;
&lt;li&gt;Adding a styled error message to an image using the before attribute&lt;/li&gt;
&lt;li&gt;Achieving zoom on hover using a wrapper div that bypasses the img tag&lt;/li&gt;
&lt;li&gt;Achieving a Pinterest-like page layout using column-width and column-gap properties of a DIV&lt;/li&gt;
&lt;li&gt;Using scroll-snap-type to guide the user’s scrolling experience in an image gallery&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I hope this will help you impress and guide users by creating your own image overlay effects. &lt;/p&gt;

</description>
      <category>css</category>
      <category>image</category>
      <category>overlay</category>
      <category>effects</category>
    </item>
    <item>
      <title>Understanding Streaming Video Bitrate</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Thu, 21 Jan 2021 07:58:44 +0000</pubDate>
      <link>https://dev.to/ilaibavati/understanding-streaming-video-bitrate-1gj6</link>
      <guid>https://dev.to/ilaibavati/understanding-streaming-video-bitrate-1gj6</guid>
      <description>&lt;h2&gt;
  
  
  What is Streaming Video Bitrate?
&lt;/h2&gt;

&lt;p&gt;Bitrate (written as bit/s) is the number of bits per second in a video stream. It determines the size and quality of video and audio files. Bitrate is related to file size as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filesize = bit/s x duration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So the higher the bit rate, the higher the file size and quality. In most cases, 1 byte per second (1 B/s) corresponds to 8 bits per second.&lt;/p&gt;

&lt;p&gt;The bitrate of a video affects video quality in many ways. Higher video bitrate results in higher video quality, and lower bitrate results in lower quality. The bitrate video users receive in practice mainly depends on their Internet connection speed and the ability of the streaming computer to encode the video. &lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Live Streaming Settings
&lt;/h2&gt;

&lt;p&gt;Below are some of the key technical aspects you should understand to set up a live stream. Determining the right bitrate for your file and streaming platform is a key step when optimizing &lt;a href="https://cloudinary.com/blog/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1"&gt;video for streaming&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bitrate is a critical factor for any streaming video protocol, including HLS, &lt;a href="https://mobidev.biz/blog/webrtc-app-development-challenges-use-cases-future"&gt;WebRTC&lt;/a&gt;, or &lt;a href="https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP"&gt;MPEG-DASH&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video Quality
&lt;/h3&gt;

&lt;p&gt;Video quality is typically a critical aspect that can make or break a video. Video quality should be focused on two things: resolution and frame rate. Resolution measures the size of the video on the screen in pixels. An example of high resolution is 1080p, meaning the video takes up 1920 x 1080 pixels. Common resolutions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4K (2160p)&lt;/li&gt;
&lt;li&gt;HD (High Definition)&lt;/li&gt;
&lt;li&gt;SD (Standard Definition)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Videos are made up of a large number of still images in sequence. Each image in this sequence is called a frame. So if the frame rate of your video is 30fps (frames per second), it will display 30 images per second. The more frames, the smoother the video. If the frame rate is low (15 fps for example), the video will stutter. Ideally, aim to broadcast at a high frame rate of 30 fps or more. For a cinema feel, you can use 24fps, which is the frame rate used when shooting movies.&lt;/p&gt;

&lt;p&gt;A higher the resolution = a higher bit rate = a higher a framerate = more hardware resources are required to encode the video while streaming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bitrate and Internet speed
&lt;/h3&gt;

&lt;p&gt;Internet bandwidth on the client side is limited. Users can check their Internet download speed by running a test on a site like Speedtest.net. Bitrate refers to the amount of data transmitted through the network in real time. So higher resolutions require higher bitrates. &lt;/p&gt;

&lt;p&gt;The video and audio bitrate must always be 20% lower than the download rate to achieve stable live streaming. For example, if the download speed is 10 Mbps, the video and audio must be less than 8 Mbps. However, the higher the resolution, the higher the demand on computing resources.&lt;/p&gt;

&lt;p&gt;Run a test before the live stream to ensure stability and quality. Many live streaming apps have presets, so you don't have to be a bitrate expert, but test the default settings and adjust them if necessary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Encoding &amp;amp; Latency
&lt;/h3&gt;

&lt;p&gt;Encoding converts the video to a format that streaming media platforms can understand. Encoding software typically has presets like “high quality / low quality” or “high speed / low speed” to determine the quality of the stream. &lt;/p&gt;

&lt;p&gt;The faster the encoding speed, the lower the video quality, but the easier it is for your hardware to encode the video. Selecting a slower encoding preset can improve quality, but there is a greater delay between what happens in the camera and what the viewer sees.&lt;/p&gt;

&lt;p&gt;In addition to configuring the encoding software, define the relevant settings in your streaming platform. On &lt;a href="https://support.google.com/youtube/answer/2853702?hl=en"&gt;YouTube&lt;/a&gt;, the delay as a result of encoding is called a live stream delay. If you need to interact with the viewers in real time, low latency is recommended, but increases the playback buffer. However, if this is not a priority, there will be less buffering, but with slightly higher latency. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to Choose the Right Bitrate for your Stream
&lt;/h2&gt;

&lt;p&gt;Here are some of the key considerations you should be aware of as you prepare to deliver a live stream to viewers. &lt;/p&gt;

&lt;h3&gt;
  
  
  Find your Upload Speed
&lt;/h3&gt;

&lt;p&gt;Internet speed is the key to deciding which bitrate option to use. For a quick test, go to Ookla's speed test (speedtest.net) and record your results. What really matters to me is the upload speed in Mbps. Knowing your upload speed can help you determine how much bandwidth is available for streaming.&lt;/p&gt;

&lt;p&gt;Note that the unit of video bitrate is Kbps, but the unit of internet speed is Mbps. The conversion is simple: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1000 Kbps = 1 Mbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are streaming multiplayer games, reserve a quota of at least 2 Mbps for the game, on top of the bandwidth you require for streaming, because the game itself needs Internet connectivity to run. &lt;/p&gt;

&lt;h3&gt;
  
  
  Select your Resolution
&lt;/h3&gt;

&lt;p&gt;The resolution of the stream determines the amount of detail to encode before it is sent to the streaming platform. In most cases it is best to use one the two most popular streaming resolutions: 720p and 1080p.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;720p (1280 x 720) resolution is considered HD and is a high resolution that most streamers can easily reproduce.&lt;/li&gt;
&lt;li&gt;1080p (1920 x 1080) resolution is considered full HD, and requires more processing power and a higher bit rate. Similarly, without sufficient bandwidth, video viewers may find it choppy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Select your Framerate
&lt;/h3&gt;

&lt;p&gt;The bitrate and resolution determine the video size, and the frame rate determines the smoothness of the video.&lt;/p&gt;

&lt;p&gt;Let’s understand framerate by comparing two types of video games. For fast action games, a suitable framerate is 60 fps or higher, otherwise the action will be choppy. For a slower-paced single player game, 30 fps may suffice. &lt;/p&gt;

&lt;p&gt;For video streaming, you should realize that framerate and bitrate work together. You may have to sacrifice resolution to increase the framerate. Framerate will become more important the more fast-paced action occurs in your stream. &lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t Make Bitrate Too High: Consider Your Users
&lt;/h3&gt;

&lt;p&gt;All streamers should consider that the bandwidth available to their viewers is limited. Even if you have an upload connection of 500 Mbps, do not use a very high bitrate, because this will cause problems for the viewer.&lt;/p&gt;

&lt;p&gt;The problem is that some streaming platforms (for example, &lt;a href="https://help.twitch.tv/s/article/guide-to-broadcast-health-and-using-twitch-inspector?language=en_US#:~:text=Twitch%20specifies%20a%20maximum%20bitrate,cannot%20handle%20higher%20bitrate%20video."&gt;Twitch&lt;/a&gt;) don’t allow users to change resolution unless you are an official partner and the platform performs transcoding for you.&lt;/p&gt;

&lt;p&gt;It is not always the case that you should send the best video and users will reduce quality as needed. In reality, the platform may reject the video or may have transcoding issues, which can cause your video to jitter.&lt;/p&gt;

&lt;h2&gt;
  
  
  How To Choose The Best Bitrate For Youtube, Twitch, and Facebook
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Twitch
&lt;/h3&gt;

&lt;p&gt;Twitch set an upload limit maximum of 6000kbps, and this limitation is set in stone. Consider using lower uploads, because Twitch reserves bandwidth for partners. If you are not a partner, your viewers will not be able to use high quality video options. &lt;/p&gt;

&lt;p&gt;In most cases, viewers are required to view video quality as uploaded to Twitch’s servers, rather than getting high quality options. To ensure optimal viewing, the download speed of the viewer should match the bitrate of your upload. Since a bitrate of 6000kbps is too high for the majority of viewers, you should use lower bitrate when uploading. &lt;/p&gt;

&lt;p&gt;You can limit most of your uploads to 720P at 60FPS. This is highly suitable for high fast action games, and you can also use Twitch’s set up recommendations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bitrate—4500kbps&lt;/li&gt;
&lt;li&gt;Keyframe interval—2 seconds&lt;/li&gt;
&lt;li&gt;Preset—Max Quality&lt;/li&gt;
&lt;li&gt;&lt;p&gt;B-frames—2&lt;br&gt;
Here are Twitch bitrate recommendations per upload speed:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For 4,000kbps or less—720p 30fps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;5,000 kbps or less—720p 60fps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;6,000 kbps—900p 60fps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;6,000kbps for partners—1080p 60fps&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  YouTube
&lt;/h3&gt;

&lt;p&gt;YouTube performs automated transcoding for streams, regardless of the number of viewers. That ensures viewers gain access to all quality options, including low options like 360p as well as the highest possible quality. Since there is no limitation, you can stream using high bitrates. Viewers can choose quality options without experiencing buffering issues.&lt;/p&gt;

&lt;p&gt;While there’s no limitation to bitrate, you should note YouTube’s recommended streaming resolution ranges. Typically, the higher resolution range can ensure the most ideal viewing experience.&lt;/p&gt;

&lt;p&gt;Here is a list of recommended ranges for YouTube:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4K 60fps—use a range of 20,000-51,000&lt;/li&gt;
&lt;li&gt;4K—use a range of 13,000-34,000&lt;/li&gt;
&lt;li&gt;1440p 60fps—use a range of 9,000-18,000&lt;/li&gt;
&lt;li&gt;1440p—use a range of 6,000-13,000&lt;/li&gt;
&lt;li&gt;1080p 60fps—use a range of 4,500-9,000&lt;/li&gt;
&lt;li&gt;1080p—use a range of 3,000-6,000&lt;/li&gt;
&lt;li&gt;720p 60fps—use a range of 2,250-6,000&lt;/li&gt;
&lt;li&gt;720p—use a range of 1,500-4,000&lt;/li&gt;
&lt;li&gt;480p—use a range of 500-2,000&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Facebook
&lt;/h3&gt;

&lt;p&gt;In comparison to YouTube and Twitch, Facebook provides the lowest streaming quality. Note that the maximum video resolution on Facebook is 1080p. YouTube, on the other hand, enables resolutions as high as 4K / 2160p. However, not all streaming is meant for high resolution. You should run some tests to see what works best for your setup.&lt;/p&gt;

&lt;p&gt;Here are the video format guidelines recommended for &lt;a href="https://www.facebook.com/business/help/162540111070395?id=1123223941353904"&gt;Facebook Live&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recommended max Facebook bitrate—4000 Kbps (4 Mbps)&lt;/li&gt;
&lt;li&gt;Max resolution—1080p (1920×1080) resolution at 60 fps.&lt;/li&gt;
&lt;li&gt;An I-frame (keyframe)—must be sent at least every 2 seconds throughout the stream&lt;/li&gt;
&lt;li&gt;Titles—must have fewer than 255 characters or the stream will fail&lt;/li&gt;
&lt;li&gt;Use H264 encoded video and AAC encoded audio-only&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Bitrate is a number that influences the quality and speed of video streaming. In order to provide your users with good video quality and loading speed, you should carefully choose the right bitrate for your stream. There are different specs for each platform, as explained above for Twitch, YouTube, and Facebook. If you are using another streaming platform, be sure to check out their specifications and set the appropriate bitrate.&lt;/p&gt;

</description>
      <category>stream</category>
      <category>bitrate</category>
      <category>video</category>
    </item>
    <item>
      <title>Integrating Agile and Design: Challenges and Solutions</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Thu, 18 Jun 2020 07:39:11 +0000</pubDate>
      <link>https://dev.to/ilaibavati/integrating-agile-and-design-challenges-and-solutions-4aa8</link>
      <guid>https://dev.to/ilaibavati/integrating-agile-and-design-challenges-and-solutions-4aa8</guid>
      <description>&lt;p&gt;Many teams are embracing &lt;a href="https://hygger.io/blog/why-agile-is-so-popular-in-project-management/"&gt;agile project management&lt;/a&gt; to work faster and more efficiently. Agile practices are typically applied to software development. However, you can use agile project development with a variety of projects and project aspects. Agile design practices are one aspect that you can incorporate into your projects.&lt;/p&gt;

&lt;p&gt;Including design processes in your agile projects can help you ensure a unified vision and excellent user experience. Successfully including design requires adapting your current design and development processes to ensure that teams work collaboratively. In this article, you’ll learn some of the challenges faced by agile project managers incorporating design and how to solve issues that arise.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Agile Project Management?
&lt;/h2&gt;

&lt;p&gt;Agile is a methodology originating from lean manufacturing, which emphasizes work that is focused on user requirements, light on planning and specifications, and broken down into small iterations. &lt;/p&gt;

&lt;p&gt;Agile projects are broken down into sprints, with each sprint focused on a limited number of “user stories”, which represent specific customer needs that need to be addressed by the project team. These user stories must be brought to completion, in such a way that they provide value to the customer, by the end of the sprint. &lt;/p&gt;

&lt;p&gt;As issues are discovered or customer needs change, future sprints are adapted to meet these new needs. The agile team coordinates sprint tasks, to respond to change, and release progressively better products in each iteration. This is typically managed using one or more &lt;a href="https://project-management.com/task-management-software/"&gt;task management tools&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Agile Design?
&lt;/h2&gt;

&lt;p&gt;Agile design is typically integrated with agile development through one of three options:&lt;/p&gt;

&lt;p&gt;An initial Design Sprint that takes place before the development sprints begin&lt;br&gt;
A Design Sprint that runs concurrently to a development sprint&lt;br&gt;
An Integrated sprint in which design and dev teams work together&lt;/p&gt;

&lt;p&gt;Design Sprints were pioneered by Google, and their goal is to help design teams clearly define goals and deliverables. They are modeled on the Design Thinking framework, which helps teams bring user needs, technological ability, and economic feasibility. &lt;/p&gt;

&lt;p&gt;A Design Sprint works as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understand&lt;/strong&gt;—teams discuss the goal or problem of the sprint. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define&lt;/strong&gt;—teams use experience gained previous phases to determine a design focus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sketch&lt;/strong&gt;—designers generate and share ideas, which are refined and submitted to the entire team for feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide&lt;/strong&gt;—the team evaluates options and determines a final sprint design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prototype&lt;/strong&gt;—the team creates a prototype based on the selected design, which works well enough to validate with testing. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate&lt;/strong&gt;—real users test the prototype and return feedback, shedding light on whether stakeholder concerns were addressed, and whether the concept is technically feasible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges and Solutions
&lt;/h2&gt;

&lt;p&gt;Below are some of the most common issues project managers and teams face when integrating design into agile workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication Challenges
&lt;/h3&gt;

&lt;p&gt;Designers and developers each have separate goals and processes, which can lead to gaps in communication. This presents a major issue for agile project managers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;br&gt;
If you find that communication is an issue, work with your team to determine their perspective on the issue and ask for suggestions as to how to improve communication. You can focus on some of these areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What needs to be communicated?&lt;/li&gt;
&lt;li&gt;What is not being communicated? &lt;/li&gt;
&lt;li&gt;Which methods of communication are more effective and which are less so?&lt;/li&gt;
&lt;li&gt;Are there specific obstacles hampering communication between team members?&lt;/li&gt;
&lt;li&gt;What is the best way to give and receive constructive feedback?
### Planning Challenges
If you run design sprints parallel to or before your development sprints, you need to plan and manage two separate sprints. If you have design and development members collaborate in a single sprint, your process has more moving parts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sprints require features and user stories to be broken into smaller chunks. This granularity can make design more difficult. It is difficult to create and ensure a coherent design if you cannot see the project as a whole. Additionally, the short timing of a sprint makes it more difficult for a designer to fully understand user needs and brainstorm ideas.&lt;/p&gt;

&lt;p&gt;If you are running two sprints in parallel, you also have two backlogs to manage. You need to ensure that tasks are prioritized in a way that prevents bottlenecks, because one sprint can move forward faster, but get stuck because it is dependent on a task from the other sprint. Prevent scope creep from adding unneeded tasks to each of the sprints. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;br&gt;
Running a pre-project design sprint, called sprint zero, can assist with planning challenges. A sprint zero provides flexibility that gives designers the time they need to research and come up with a plan for a unified design. This design can be broken down into smaller pieces for refinement in your project sprints. Having some design guidance beforehand also provides developers a rough guideline for their work.&lt;/p&gt;

&lt;p&gt;When planning sprint tasks, keep in mind how your planning will affect the next sprint. Developer tasks should address design elements from the previous sprint to provide feedback for designers, letting them prepare design specs for the next sprint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prototype Challenges
&lt;/h3&gt;

&lt;p&gt;It is not uncommon that designers or stakeholders want to create and approve a high-fidelity prototype. A high-fidelity or hi-fi prototype is an interactive prototype that closely resembles a final product.&lt;/p&gt;

&lt;p&gt;Hi-fi prototypes are fine for waterfall projects but not for agile projects. In agile projects, scope often changes along the way and issues may only become apparent in later iterations. If these issues and changes occur, your high-fidelity design may amount to wasted effort or unrealistic expectations. While hi-fi prototypes are often “prettier”, effort is wasted if a functional project can’t be made from the prototype.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;br&gt;
When possible, stick to lo-fi prototypes that get the idea across while still allowing flexibility. The point of the prototype isn’t to fully demonstrate or predict the finished project, it’s to solicit feedback and verify concepts. &lt;/p&gt;

&lt;p&gt;If you still want or need a semi-functional design to present or work from, there are several options. Doing mockups in low-code development platforms, such as Axure or iRise, is one solution. These platforms enable designers to create mockups with limited programming skills. Many platforms also integrate into tools your development team may be using, such as Jira, as well as with various &lt;a href="https://technologyadvice.com/project-management/"&gt;project management solutions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another option is to have prototypes double as design specs. Design specs are documents that provide information about design details, including measurements, workflow, behavior, color scheme, and functionality. When your prototypes serve as design specs, designers can spend more time refining without changing project timelines. &lt;/p&gt;

&lt;h3&gt;
  
  
  Challenges Created by the Lack of a Dedicated Designer
&lt;/h3&gt;

&lt;p&gt;Commonly, designers work for multiple teams at once or design processes are outsourced. This can make it very difficult to successfully implement agile design. &lt;/p&gt;

&lt;p&gt;When a designer is only present for parts of sprints, it can prevent the development of team trust and collaboration. The designer can’t be fully involved and isn't available to provide or receive feedback. It can also create the perception that designers are less accountable for their work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;br&gt;
One possible solution for this issue is to have a dedicated designer in your team. You might be able to have the overall design research and planning done by an outside team. However, there should always be a designer on the team as a representative for that work. &lt;/p&gt;

&lt;p&gt;Having a designer present ensures that relevant tasks are included and prioritized correctly. It also promotes skill sharing as design and development team members can collaborate in real-time.&lt;/p&gt;

&lt;p&gt;Another solution is to have a &lt;a href="https://cloudinary.com/dam-guide/dam-systems/"&gt;Digital Asset Management&lt;/a&gt; (DAM) system support the design process.  DAM is a centralized work tool that stores and keeps track of all your digital assets. This tool also works for project management, and collaboration between teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Due to Lack of Cross-Over Skills
&lt;/h2&gt;

&lt;p&gt;Lack of cross-over skills makes communication more difficult and limits the ability of team members to help each other. It can also create bottlenecks if a team member with a needed skill is unable to work. &lt;/p&gt;

&lt;p&gt;For designers, lack of technical knowledge limits their ability to design to greatest effectiveness. For developers, lack of design knowledge prevents them from contributing to design solutions. It can also prevent a developer from successfully interpreting and applying design mockups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;br&gt;
If your team lacks cross-over skills, start with training. You can hold short sessions, during which team members teach each other the basics of their skill sets. You can also support independent learning through webinars or online courses.&lt;/p&gt;

&lt;p&gt;Creating guidelines for goals and capabilities can help you create reference tools. You can then use these tools to build knowledge and understanding. In particular, you can have your team create design guidelines. For example, you can create a package of HTML, CSS, and JavaScript templates. &lt;/p&gt;

&lt;p&gt;Templates can include aspects like color schemes, parameters for responsive design, and text styling. These templates can be used as a base by developers and project managers for mockups that designers can work to refine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Including agile design in your projects can help you ensure the creation of a high-quality project. The integration of design and development can reduce sacrifices made in a project’s functionality and usability. It can also reinforce the customer-centric focus of agile projects. &lt;/p&gt;

&lt;p&gt;Unfortunately, the integration of design and development isn’t always smooth. Hopefully, this article helped you understand what challenges you may face in managing this integration. Using the tips provided here, you can address these challenges and even work to prevent issues from arising in the first place.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Top Data Security Threats and How to Mitigate Them</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Mon, 09 Sep 2019 08:24:46 +0000</pubDate>
      <link>https://dev.to/ilaibavati/top-data-security-threats-and-how-to-mitigate-them-3eie</link>
      <guid>https://dev.to/ilaibavati/top-data-security-threats-and-how-to-mitigate-them-3eie</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fbmZ3584--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.pixabay.com/photo/2018/06/13/15/17/network-3472956_960_720.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fbmZ3584--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.pixabay.com/photo/2018/06/13/15/17/network-3472956_960_720.jpg" alt=""&gt;&lt;/a&gt;&lt;br&gt;Image by The Digital Artist from &lt;a href="https://pixabay.com/illustrations/network-security-data-technology-3472956/"&gt;Pixabay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Whether you are a large business or a private individual, chances are you have some sensitive information online. However, if you are an organization that handles payments, for example, or you store personally identifiable information about your customers, you have an added responsibility for ensuring that this data is safe.&lt;/p&gt;

&lt;p&gt;While business and personal data has always been attractive to attackers, the stakes have become increasingly high in recent years. Private companies, authorities and security software companies are pitted against cybercriminals in an unrelenting race to improve their protective capabilities. However, while technology is usually able to keep up with the increasingly sophisticated threats, many organizations &lt;a href="https://www.techradar.com/news/a-third-of-businesses-cant-protect-themselves-from-data-breaches"&gt;are unable&lt;/a&gt; to protect themselves against such threats.&lt;/p&gt;

&lt;p&gt;Read on to learn about some of the top threats to data security and what you can do to mitigate them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Data Security?
&lt;/h2&gt;

&lt;p&gt;Data security refers to the practices and policies employed by organizations to ensure the confidentiality, integrity and availability of data. For some industries, standards such as the &lt;a href="https://eugdpr.org/"&gt;GDPR&lt;/a&gt;, &lt;a href="https://www.hhs.gov/hipaa/index.html"&gt;HIPAA&lt;/a&gt; and &lt;a href="https://www.pcisecuritystandards.org/"&gt;PCI DSS&lt;/a&gt; may apply, and failure to comply can result in hefty financial repercussions.&lt;/p&gt;

&lt;p&gt;Data security measures are typically laid out in an organizational policy and implemented by the Security Operations Center (SOC). In many cases, such as for companies operating in the EU, it is the responsibility of the &lt;a href="https://digitalguardian.com/blog/what-data-protection-officer-dpo-learn-about-new-role-required-gdpr-compliance"&gt;Data Protection Officer (DPO)&lt;/a&gt; to oversee the implementation of security policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Data Security Threats
&lt;/h2&gt;

&lt;p&gt;For the sake of simplification, I’ll classify data security threats into two types, data loss and data theft.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Loss&lt;/strong&gt;&lt;br&gt;
If data becomes unavailable, is damaged or deleted, this could potentially bring your operations grinding to a halt. It is also a legal requirement, in many cases, to guarantee that personal data is available to the data owner at all times. &lt;/p&gt;

&lt;p&gt;Data loss can result from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Physical incidents&lt;/strong&gt;—such as natural disasters, a power outage, damage to the server or wars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human error&lt;/strong&gt;—this is perhaps the most common cause of data loss, with users accidentally deleting data or falling prey to social engineering attacks such as phishing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cyberattack&lt;/strong&gt;—often, the main concern for an organization is that a cybercriminal or malicious insider will attack the system and destroy the data. Data can become temporarily or permanently unavailable if there is an attack on the network that causes the server to crash, such as a Denial-of-Service (DoS) attack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data Theft&lt;/strong&gt;&lt;br&gt;
This is especially serious if it involves identity theft, which allows an attacker to gain access to restricted resources or steal money. Attackers will often steal data for corporate espionage purposes, or to sabotage a company. &lt;/p&gt;

&lt;p&gt;Common causes of data theft include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Insider threats&lt;/strong&gt;—a disgruntled employee may steal data and pass it to a rival company, either for financial gain or &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social engineering&lt;/strong&gt;—this refers to attacks that manipulate an insider with access to sensitive data or restricted parts of the network. The victim may mistakenly share privileged information with the attacker, allowing them to gain access. The most common form of social engineering attack is phishing, or spam emails and websites designed to get people to click on a link and unwittingly download malware. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Persistent Threats (APTs)&lt;/strong&gt;—these are an insidious form of cyberattack, in which an attacker gains access to a system and hides for a long period of time within the network, quietly collecting data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Man in the Middle (MitM) attacks&lt;/strong&gt;—these intercept network traffic, capturing data when in transit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What You Can Do
&lt;/h2&gt;

&lt;p&gt;The following practices should help you protect &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Loss Prevention (DLP)&lt;/strong&gt;&lt;br&gt;
To prevent data loss, organizations can employ a number of protective measures, such as backing up data to a second location. Physical redundancy is used to protect data in cases of natural disasters, outages or wars, or from an attack targeting on-premise servers. This involves storing data in an off-site data center or cloud environment. &lt;/p&gt;

&lt;p&gt;There are a number of data loss prevention practices and policies that can help protect your data. It may also be worthwhile considering software tools, such as a &lt;a href="https://www.exabeam.com/dlp/data-loss-prevention-policies-best-practices-and-evaluating-dlp-software/"&gt;DLP solution&lt;/a&gt;, to help you implement your data protection strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Encryption&lt;/strong&gt;&lt;br&gt;
To ensure that only authorized users can access your data, it is advisable to encrypt it in transit and at rest. This works by making the data unreadable to anyone without a decryption key. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication and Authorization&lt;/strong&gt;&lt;br&gt;
You can use authentication protocols such as &lt;a href="https://searchapparchitecture.techtarget.com/definition/OAuth"&gt;OAuth&lt;/a&gt; to protect your network. For added security, use two-factor or multi-factor authentication, combining a password with an additional measure such as confirmation code. The purpose of authentication is to verify that you are indeed who you say you are.&lt;/p&gt;

&lt;p&gt;The next step is authorization, which establishes the access rights of a user. Limiting access rights is an important way to reduce the risk of exposing data. Authorization ensures that the access rules you have applied are implemented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Updates&lt;/strong&gt;&lt;br&gt;
This may seem very basic, but many organizations overlook this important step. You should be updating your operating system and any applications or dependencies regularly to ensure that known security vulnerabilities are fixed. You should enable automatic updates where possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conduct Security Audits&lt;/strong&gt;&lt;br&gt;
You should be conducting security audits at least every few months. This is to ensure that your overall security profile is up to scratch. You can use a third-party professional to conduct the audit, but in most cases this is unnecessary, and you should be able to do it yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credit Freeze&lt;/strong&gt;&lt;br&gt;
As a last line of defense in the event of an actual data breach, you can freeze your credit report. This involves locking your data at the credit bureau level, which has the ability to sell your personal financial identity data. This is the most effective way to block identity theft, as it disables the ability of a threat actor to use, for example, credit card information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Anti-Malware and Antivirus&lt;/strong&gt;&lt;br&gt;
Since malware is the most common vector for cyberattacks, it is important to make sure you have the right protection installed. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protect Your Endpoints&lt;/strong&gt;&lt;br&gt;
Endpoint devices are an important way for users to access critical data remotely but they also present an opportunity to attackers. You should implement good endpoint security practices, such as reducing access to endpoint devices where possible. &lt;/p&gt;

&lt;p&gt;In some cases, limiting access is not a practical solution, so it is better to rely on software solutions such as an Endpoint Protection Platform (EPP) with Endpoint Detection and Response (EDR) capabilities. This will help mitigate against threats on the endpoints, including insider threats. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Data breaches are everywhere, and the threats to the security and integrity of your data are only going to multiply. However, there are a number of measures that you can apply to help protect your data from loss, damage or theft. The practices mentioned above are a good start, but you should establish a clear data security policy that will allow you and your employees to implement these measures as required. &lt;/p&gt;

&lt;p&gt;It is also important to update your security strategy to keep up with evolving threats. Use the tools available to you, and don’t be afraid to seek help when you need it—a third-party security platform or consultant may well know best what you need to do to protect your data. Maintaining data security is essential for the survival of your business, as well as for compliance purposes, depending on your industry.&lt;/p&gt;

</description>
      <category>security</category>
    </item>
    <item>
      <title>Getting the Best Performance Out of Amazon EFS</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Sun, 25 Aug 2019 22:35:17 +0000</pubDate>
      <link>https://dev.to/ilaibavati/getting-the-best-performance-out-of-amazon-efs-52h5</link>
      <guid>https://dev.to/ilaibavati/getting-the-best-performance-out-of-amazon-efs-52h5</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.pixabay.com%2Fphoto%2F2015%2F09%2F05%2F00%2F30%2Ffile-folders-923523_960_720.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.pixabay.com%2Fphoto%2F2015%2F09%2F05%2F00%2F30%2Ffile-folders-923523_960_720.jpg"&gt;&lt;/a&gt;&lt;br&gt;Image source: &lt;a href="https://pixabay.com/photos/file-folders-business-office-desk-923523/" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Amazon is the &lt;a href="https://hostingtribunal.com/blog/cloud-adoption-statistics/" rel="noopener noreferrer"&gt;most widely used&lt;/a&gt; cloud provider and with new services being released regularly that seems unlikely to change any time soon. This makes sense—if you’ve already adopted one of AWS’ offerings, keeping your cloud services uniform can be easier to manage. EFS is just one of the offerings from AWS which is appealing because of its potential both as a stand-alone product and it’s usefulness as an integrated service. &lt;/p&gt;

&lt;h2&gt;
  
  
  An Intro to AWS EFS
&lt;/h2&gt;

&lt;p&gt;AWS Elastic File System (EFS) is an automatically scaling system for Linux-based workloads that can be used with AWS or with on-premise resources. EFS is a fully managed service with a standard file system interface that offers file sharing through instances, AWS Direct Connect, or AWS VPN. It is designed to provide parallel access to thousands of Elastic Cloud Compute (EC2) instances for high aggregate throughput and I/O Operations per Second (IOPS) with low latency. &lt;/p&gt;

&lt;p&gt;EFS is accessible across Availability Zones, Regions, and VPCs. Its primary uses are for lift-and-shift of enterprise applications, big data analytics, web serving, content management, media and entertainment workflows, and database backups. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to Test Drive EFS
&lt;/h2&gt;

&lt;p&gt;If you haven’t yet decided on &lt;a href="https://cloud.netapp.com/blog/ebs-efs-amazons3-best-cloud-storage-system" rel="noopener noreferrer"&gt;AWS EFS&lt;/a&gt;, the best way to test it is by getting started with the free tier, which lets you use 5 GB of storage for 12 months. Doing so can help you get a feel for how the service works, what its limitations are, and develop some advanced file system techniques that are needed for successful operation. &lt;/p&gt;

&lt;p&gt;To get set up you’ll need to create and launch an EC2 instance, create your EFS file system, connect to your instance, and mount the file system. This can be done either through the Management Console or the Command Line Interface (CLI) and a walkthrough can be found on AWS. &lt;/p&gt;

&lt;p&gt;Once you’re set up, you can start testing its capabilities by writing files using single threads, multiple threads, with variable numbers of instances, or whatever other settings you think you might be interested in using. &lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Tuning
&lt;/h2&gt;

&lt;p&gt;Once you get EFS up and running in production, you’ll likely need to spend a bit of time tweaking your configuration to get the best performance. The following tips can get you started. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Increase Your Limits&lt;/strong&gt;&lt;br&gt;
In EFS, because instances are not used, I/O limits are dictated by storage type. You can select between General Performance, for low-latency and high scalability, or Max I/O, for large transfer volume but higher latency. &lt;/p&gt;

&lt;p&gt;Whichever you choose, your new volumes will start with only .5MB/s baseline throughput and 7.2 minutes of 100MB/s burst throughput which can only be increased by increasing your file system size. To get around this, the simplest solution is to write dummy data to your system. Doing so will force both your baseline throughput and your burst limits. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Asynchronous Write&lt;/strong&gt;&lt;br&gt;
You can buffer pending write operations onto your EC2 instances if you enable the asynchronous write feature. Doing so will eliminate the need for a round trip from EFS to the client for each write and will reduce latency. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn From Metrics&lt;/strong&gt;&lt;br&gt;
AWS CloudWatch &lt;a href="https://www.trek10.com/blog/cloudwatch-deep-dive/" rel="noopener noreferrer"&gt;automatically collects metrics data&lt;/a&gt; for you, which can be accessed through CLI, API, or the console. This data can keep you updated on how your system is performing and provide you the information you need to troubleshoot any issues that arise. All of the metrics collected can provide value but burst credits, in particular, is one to keep an eye on as EFS users are frequently caught off-guard by them running out. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separate Your Operations&lt;/strong&gt;&lt;br&gt;
To maximize your EFS performance, consider separating your latency-sensitive operations into individual volumes. This will grant them separate burst credits and throughput caps, thus protecting them from time-insensitive operations. You may not see the same performance as you would if your files were locally mounted but will get more consistent performance. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t Run App Code&lt;/strong&gt;&lt;br&gt;
EFS is not able to provide the fast speed or large read volumes that deploying applications or managing codebases require. Instead, it is meant to be used as massively shared storage, used for media assets, asynchronous logs, or exported data files. It can certainly be used to store application data or even be accessed by applications but for actual deployment, you should stick to local file systems or containers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate Backups&lt;/strong&gt;&lt;br&gt;
Unlike some of AWS’ other services, EFS does not come with a snapshot feature and you must use other methods for backing up your data. AWS Backup, custom scripting with Lambda, or via third-party tools, are all viable options. Backup has the added benefit of being able to manage the backup of your other AWS services while Lambda and custom scripting allow you the greatest flexibility. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take Care With Mount Options&lt;/strong&gt;&lt;br&gt;
EFS &lt;a href="https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-mount-cmd-general.html" rel="noopener noreferrer"&gt;default mount options&lt;/a&gt; are sufficient for most users so you should avoid adjusting them unless you’re sure that doing so will improve your system. During configuration, try to use Network File System (NFS) version 4.1 if possible to avoid missing out on protocol improvements. &lt;/p&gt;

&lt;p&gt;One of the biggest benefits of EFS is its ability to attach to thousands of EC2 instances concurrently so make sure you’re taking advantage of this ability for increased aggregate throughput. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap Up
&lt;/h2&gt;

&lt;p&gt;EFS is just one of several services offered by AWS for file storage and it may be the right option for you. If you need to share files broadly and on a huge scale, it might even be your best option. &lt;/p&gt;

&lt;p&gt;If you’ve been considering this service, I encourage you to play around with the free tier, keeping in mind the potential performance issues mentioned here. If you’ve already adopted this service, hopefully, this article gave you some useful tips for improving your system performance. &lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>Tips for a Solid AWS Disaster Recovery Plan</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Thu, 27 Jun 2019 21:48:47 +0000</pubDate>
      <link>https://dev.to/ilaibavati/tips-for-a-solid-aws-disaster-recovery-plan-575i</link>
      <guid>https://dev.to/ilaibavati/tips-for-a-solid-aws-disaster-recovery-plan-575i</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxmgjz5migtcyi0dbp1iv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxmgjz5migtcyi0dbp1iv.jpg"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://pixabay.com/photos/storm-weather-thunderstorm-thunder-2567670/" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;No environment or platform is 100% secure, and even a brief interruption of service can mean thousands of dollars in data loss, not to mention the loss of sales opportunities and the impact in customer trust. The cause of the disaster can be natural, a human error, malicious activity or mechanical failure. &lt;/p&gt;

&lt;p&gt;The most important thing for a company in the cloud is to ensure business continuity. To prevent a disaster to get you out of business you need a solid disaster recovery plan that can help you stay running in the event of an outage or attack. AWS users can leverage from functions in the environment to build their own Disaster Recovery Plan (DRP). Read on to learn how to use the features in your AWS console to keep your data safe. &lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Disaster Recovery Plan Overview
&lt;/h2&gt;

&lt;p&gt;A Disaster Recovery Plan (DRP) consists of structured, detailed and documented instructions to recover disrupted systems and networks, helping companies bounce back to business as close as normal as possible. &lt;/p&gt;

&lt;p&gt;A disaster is anything that can take operations offline, impacting business continuity or finances, can be malicious attacks or hardware or software failures. Many companies cannot afford an on-premises disaster recovery solution because of the high costs of implementation and maintenance. Cloud technology helps organizations with a cost-effective solution as part of the cloud provider services, like AWS or Azure. AWS has partnered with companies such as &lt;a href="https://n2ws.com/" rel="noopener noreferrer"&gt;N2WS&lt;/a&gt; and &lt;a href="https://www.cloudberrylab.com/" rel="noopener noreferrer"&gt;Cloudberrylab&lt;/a&gt;, which offer disaster recovery solutions specifically for AWS. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do You Need an AWS Disaster Recovery Plan
&lt;/h2&gt;

&lt;p&gt;Users who choose AWS as their cloud provider should develop a disaster recovery plan using the tools specifically available for the platform. There are a number of benefits from having a disaster recovery plan ready when you use AWS. These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protecting critical data&lt;/strong&gt;—by establishing replication intervals to minimize data loss. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimized downtime&lt;/strong&gt;—a DRP allows restoring critical applications to running mode quickly. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ensured business continuity&lt;/strong&gt;—using AWS cross-region disaster recovery to disperse the risk of having all your data exposed to the same threats. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick retrieval of files and data&lt;/strong&gt;—implies minimal time to restore service. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliable and scalable service&lt;/strong&gt;—leveraging AWS overall benefits. 
## Tips for a Solid AWS Disaster Recovery Plan
When you develop a DR Plan for AWS these are the basic steps to follow:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit your assets&lt;/strong&gt;—identify what resources, applications, and components are critical to your organization. Conducting a Business Impact Analysis gives you an idea of how threats can affect business operations and growth. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define control measures&lt;/strong&gt;—they can be preventive measures such as surge protectors, detective measures such a server and network monitoring software. Remediation tools, for example, are corrective measures that help restore a system after a disaster. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test your plan before you need it&lt;/strong&gt;—conduct scheduled testing to find the gaps in the DRP. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan the maintenance&lt;/strong&gt;—updated on a regular basis to keep up with system changes. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After you have your plan laid out, it is time to use the features in your AWS console to help secure your data. The following are some tips and aspects to consider when developing a DRP with AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backup your data, it is the backbone of disaster recovery&lt;/strong&gt;&lt;br&gt;
You can only recover what is on backup. Simply scheduling regular backups of what you have stored on Amazon EC2 and the EBS volumes attached to those instances is not enough. You need to access your data quickly in times of disaster. A well laid and tested &lt;a href="https://n2ws.com/blog/aws-cloud/how-to-create-a-disaster-recovery-plan-for-aws" rel="noopener noreferrer"&gt;AWS disaster recovery&lt;/a&gt; process can help you retrieve and restore the backup data from the AWS cloud environment. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Define what is your recovery time objective(RTO) and the recovery point objective(RPO)&lt;/strong&gt;&lt;br&gt;
Knowing how long your organization can be offline before suffering unacceptable monetary losses, (RTO), is critical to design your recovery plan. It is also vital to know how much data loss are you going to accept (RPO) in terms of time. For example, if losing 6 hours of data is unacceptable, then you need an RPO of less than 6 hours.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose your disaster recovery planning method&lt;/strong&gt; &lt;br&gt;
There are many options for DR recovery methods depending on your preferences and needs. Some of the most common are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backup and Restore&lt;/strong&gt;—simply backup and restores data as needed. It has the drawback that none of the data is on standby so it can be time-consuming. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pilot Light&lt;/strong&gt;—keeps critical applications and data ready to be quickly retrieved in the event of a disaster. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Warm Standby&lt;/strong&gt;—keeps a duplicate version of the organization’s core elements running on standby at all times, so in a disaster, they can use this duplicate to maintain operations. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hot Standby&lt;/strong&gt;—replicates fully the data and applications in two or more active locations, splitting the traffic between them. In the event of a disaster, is simple to reroute everything to the unaffected region, meaning close to no downtime. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Identify critical data and utilizing cross-region backups&lt;/strong&gt;&lt;br&gt;
You need to choose not only what data is critical to protect but how your data will be stored (for example using snapshots), and where this data will be stored. Storing all your backups close geographically is not the best idea, much like putting all your eggs in one basket. Should a disaster occur, your whole system could get knocked offline in an instant. It is better to spread the data across availability zones (AZ) around the world. How do you do it? &lt;/p&gt;

&lt;p&gt;If your database is covered in Amazon Relational Database (RDS), you can use a Multi-AZ option to create a backup of an RDS instance. The downside? This will cost you extra since AWS charges double for a multi-AZ RDS setup instead of a single RDS instance. Make sure the EC2 instances are also spread across several AZ especially the ones in production.&lt;/p&gt;

&lt;p&gt;Using Auto-Scaling Groups (ASG) can allow you to choose multiple AZ to deploy your instances. An Elastic Load Balancer (ELB) to distribute the traffic between them and balance the workload.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use cross-region replication for S3&lt;/strong&gt;&lt;br&gt;
Amazon S3’s ability to duplicate the data to multiple locations within a region has made it the most popular AWS storage service. While this default feature creates high durability doesn’t annul the risk of losing data in a specific region. To avoid this scenario, just use the cross-region replication option, that copies the data to a designated bucket in another region. The feature does it automatically. How do you do it?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the S3 console&lt;/li&gt;
&lt;li&gt;Enable versioning&lt;/li&gt;
&lt;li&gt;Look for the cross-region replication option and enable it. &lt;/li&gt;
&lt;li&gt;Pick the source bucket and prefix&lt;/li&gt;
&lt;li&gt;Create an IAM role&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keep in mind the cross-region synchronization starts from the moment the option is enabled. If you want to synchronize existing data you need to do it by hand. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use global tables for DynamoDB Data cross-region replication&lt;/strong&gt;&lt;br&gt;
DynamoDB &lt;a href="https://aws.amazon.com/dynamodb/global-tables/" rel="noopener noreferrer"&gt;global tables&lt;/a&gt; deploy a multi-region multi-master database and send changes across several tables. This works great for disaster recovery as the data is spread in several regions, minimizing the risk of critical data loss. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep your AWS Root Credentials secure with multi-factor authentication&lt;/strong&gt; &lt;br&gt;
Root credentials are used to create initial users with administrator privileges. Therefore, the Root password should be hidden from non-authorized users, to avoid the risk of internal threats. The programmatic keys should be disabled once they are used. How do you do it? The best option is to set up a multi-factor authentication solution.While it may seem obvious, overlooking this detail can have disastrous consequences if they fall in malicious hands.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consider a third-party disaster recovery as a service (DRaaS)&lt;/strong&gt;&lt;br&gt;
While most companies handle disaster recovery in-house, for small companies without a large IT team, sometimes makes it sense to get a third-party solution. DRaaS solutions help companies by implementing and maintaining their DRPs, allowing them to focus on developing their business with peace of mind. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;AWS users can leverage the existing tools in the AWS environment to build their disaster recovery plan. While AWS doesn’t have proprietary disaster recovery services, the platform allows users to repurpose some of its features and functions to create their own DR solution. We described several tips and tricks that can help you take full advantage of the functions in your AWS environment, to keep your data safe. &lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>How to Automate AWS Snapshots Using the Life Cycle Policy</title>
      <dc:creator>Ilaibavati</dc:creator>
      <pubDate>Thu, 20 Jun 2019 16:30:51 +0000</pubDate>
      <link>https://dev.to/ilaibavati/how-to-automate-aws-snapshots-using-the-life-cycle-policy-4p2j</link>
      <guid>https://dev.to/ilaibavati/how-to-automate-aws-snapshots-using-the-life-cycle-policy-4p2j</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp035d16va7qgtdmsgo87.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp035d16va7qgtdmsgo87.jpg" width="800" height="431"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://cdn.pixabay.com/photo/2019/02/15/17/09/cloud-3998880_960_720.jpg" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
  
  
  What Are AWS EBS Snapshots?
&lt;/h2&gt;

&lt;p&gt;EBS snapshots are point-in-time copies of EBS volumes stored on Amazon S3. These snapshots are incremental, meaning each snapshot only stores data which has changed since the last snapshot, reducing necessary storage space. Snapshots are chained together into a sort of version history and the data is consolidated by Amazon, meaning individual snapshots can be deleted without affecting recovery capabilities. &lt;a href="https://cloud.netapp.com/blog/azure-aws-snapshots-explained" rel="noopener noreferrer"&gt;AWS snapshots&lt;/a&gt; can be accessed from the AWS portal to restore EBS volumes in case of loss but are not downloadable or exportable.&lt;/p&gt;
&lt;h2&gt;
  
  
  How Snapshots Were Created Before Native Automation
&lt;/h2&gt;

&lt;p&gt;Initially, there was no automated process for snapshot creation and they had to either be taken manually, created using API calls, or a script or had to be run with Cron, a time-based scheduler, for each instance. The script that you created, or chose to use, had to be run through AWS CLI and was reliant on AWS not altering its code structure or denying third-party access. The introduction of Lambda simplified this process by allowing you to run code on AWS administrated instead of self-managed servers, but you still had to provide the code to be run.&lt;/p&gt;
&lt;h2&gt;
  
  
  Automation Process with Data Lifecycle Manager (DLM)
&lt;/h2&gt;

&lt;p&gt;Amazon’s DLM allows you to create and manage your AWS snapshots through native automation directed by policies you create. In order to use DLM, you must first tag your resources and then create a backup policy. Policies define which resources are managed, which tags are targeted, the schedule of the backup, and how many snapshots are retained. Currently, EBS volumes and EC2 instances are the available resources. Tags are defined by you and should be created with &lt;a href="https://blog.cloudability.com/two-solutions-for-tagging-elusive-aws-ebs-volumes/" rel="noopener noreferrer"&gt;careful consideration&lt;/a&gt;. Multiple tags can be added to each EBS volume to allow targeting by multiple policies and multiple policies can target the same tags. The policies you define will run according to their schedule, with up to an hour variance, until you deactivate or modify them.&lt;/p&gt;
&lt;h3&gt;
  
  
  Some things to be aware of:
&lt;/h3&gt;

&lt;p&gt;Each AWS account is limited to 100 lifecycle policies per region, 50 tags per resource, and one schedule per policy. Once a policy is changed, it will no longer manage retained snapshots or target tags to which it no longer applies, so it is up to you to manage these manually, through the creation of a new policy, or with custom scripts. DLM is a per-region service so policies will only apply to the region for which they are created. There is no built-in option for copying snapshots from one region to another, such as for the purpose of disaster recovery, so you may still need to use custom scripts or do this process manually. DLM is a free service but you are still charged for storage used by snapshots and instance load and I/O usage will increase while snapshots are created.&lt;/p&gt;
&lt;h2&gt;
  
  
  Using the Lifecycle Policy to Automate AWS Snapshots
&lt;/h2&gt;

&lt;p&gt;Life cycle policies can be created and managed through the EC2 console, the CLI, or APIs. All three methods require the creation of an IAM role to grant permissions necessary for DLM to manage your snapshots.&lt;/p&gt;
&lt;h3&gt;
  
  
  Permissions for Amazon DLM
&lt;/h3&gt;

&lt;p&gt;The IAM role is created automatically, as AWSDataLifecycleManagerDefaultRole, the first time you create a policy through the AWS management console or you can &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html" rel="noopener noreferrer"&gt;create&lt;/a&gt; the role manually. If you choose the manual route you will need to assign permissions and add a trust relationship. You will also need to grant permissions for DLM use to your IAM users.&lt;/p&gt;
&lt;h3&gt;
  
  
  Using the EC2 Console
&lt;/h3&gt;

&lt;p&gt;Using the EC2 console is probably the simplest user interface available. To create lifecycle policies navigate to the lifecycle manager in the EBS and provide the information outlined below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;—description of the policy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target with tags&lt;/strong&gt;—tags identifying volumes or instances to be backed up&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule Name&lt;/strong&gt;—name for the backup schedule&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create snapshots every n Hours&lt;/strong&gt;—time between repetitions, supported values are 2, 3, 4, 6, 8, 12, and 24&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snapshot creation start time hh:mm UTC&lt;/strong&gt;—time policy is scheduled to start&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention rule&lt;/strong&gt;—set number of snapshots to be retained in the range of 1-1000&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy tags&lt;/strong&gt;—Copy all user-defined tags on a source volume to snapshots of the volume created by this policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tag created snapshots&lt;/strong&gt;—policy id and schedule name tags are automatically added but you can add additional tags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM role&lt;/strong&gt;—either the default created by DLM or your custom creation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy status after creation&lt;/strong&gt;—enable to run, disable to not&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a policy has been created you can view the policy in the details tab and modify settings or delete the policy through actions.&lt;/p&gt;
&lt;h3&gt;
  
  
  Using the CLI
&lt;/h3&gt;

&lt;p&gt;If you are already familiar with the CLI, you can now use this method to work with lifecycle policies through AWS specified commands. To create policies, use &lt;code&gt;create-lifecycle-policy&lt;/code&gt; and its appropriate parameters. An example of this can be seen below and AWS has produced a &lt;a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshot-lifecycle.html" rel="noopener noreferrer"&gt;whitepaper&lt;/a&gt; with more detail.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;After a policy has been created, use the following commands for management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;To display&lt;/strong&gt;—&lt;code&gt;get-lifecycle-policy --policy-id policy-xxxxxxxxxxxxxxxxx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To modify&lt;/strong&gt;—&lt;code&gt;update-lifecycle-policy&lt;/code&gt; (with changes to parameters used in creation as necessary)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To delete&lt;/strong&gt;—&lt;code&gt;delete-lifecycle-policy --policy-id policy-xxxxxxxxxxxxxxxxx&lt;/code&gt;
### Other options
If using the EC2 console or the CLI doesn’t suit you, policies can also be created and managed through either the &lt;a href="https://docs.aws.amazon.com/dlm/latest/APIReference/API_Operations.html" rel="noopener noreferrer"&gt;Amazon DLM query API&lt;/a&gt; or by using &lt;a href="https://aws.amazon.com/tools/#SDKs" rel="noopener noreferrer"&gt;AWS SDKs&lt;/a&gt; to access an API appropriate to your needs.
## Conclusion
The introduction of native automation for AWS snapshot management makes the process much simpler and hopefully more reliable but it is important to understand the limitations of DML to make the benefits work for you. This automation can save you time and effort if used correctly but must still be monitored, particularly if there are multiple users with the ability to create or manage policies. Be sure to consider the cost of running and storing all your newly created backups when determining your automation policies so you aren’t trading time value for that of resources. If you need extended capabilities that go beyond what is currently offered natively, you can try a &lt;a href="https://www.datamation.com/applications/product-lifecycle-management-software.html" rel="noopener noreferrer"&gt;lifecycle management software&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

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