5 Steps to Building a Cloud-Ready Application Architecture in AWS

Amazon Web Services (AWS) is an IaaS, commonly known as Infrastructure-as-a-Service, that is responsible for creating a huge gateway for cloud computing. This platform further specializes in services and organizational tools that range from content delivery services to cloud storage, and so on. 

But when it comes to creating cloud-ready applications, then there are a ton of things that you need to cater to, in order to ensure a smooth flow of elements and functions within the application itself. Let’s dive into the basic explanation of what’s cloud-ready and how is it different from the traditional cloud-native method.

Cloud-Ready Architecture vs. Cloud-Native

Cloud-native and Cloud-ready architecture may be branches of the same field, but they are polar opposite setups. Cloud-Native applications were originally designed for container-based deployment for the public cloud, and they use agile software development to get things done. 

Cloud-ready architecture, on the other hand, is a transformed classic enterprise application that is made to function on the cloud. They may not be able to utilize all the functions that the public cloud has to offer, but there are a significant number of productive assets that we can create and use from this transformed architecture.

However, when creating cloud applications, there are certain aspects you need to integrate and look out for in an AWS well-architected framework, to create a solid foundation that holds onto all the integral functions of the applications and caters to all the requirements of cloud-ready application architecture in AWS.

The AWS well-architected framework is designed on the 5-pillar model that ensures not only smooth transitioning but also lives up to the expectations of the client with timely and stable deliverables. Those AWS five pillars are as follows: 

  1. Design and operational excellence of AWS well-architected framework

The AWS architecture best practices start from the operational excellence which includes the key objectives of your business goals and how the organization can effectively work around them to gain insight, provide the best solutions and bring value to the business altogether. The design principles are categorized as follows:

  • Use of codes on all mediums of the workloads (infrastructure, applications, etc) to maintain autonomy and limit human error as much as possible. 
  • Create flexibility by updating small changes and upgrades to the system which can be reversible without any damage.
  • Evolve and upgrade your systems by refining the functions and procedures now and then. Set days to effectively work around and improve the system with your team to familiarize them with the changes.
  • Anticipate, trigger, identify and solve all the potential failures by diving in deep and conducting frequent testings and understanding the impact it creates, and familiarizing your team with it as well.
  • Share all the necessary trial and error outcomes with your team and engage them in all the learnings that you deciphered during necessary operational procedures. 
  1. Consistent and reliable performance (workloads) 

It is necessary to maintain a smooth performance while building cloud infrastructure on AWS well-architected framework. Maintaining performance efficiency will lead to smooth transitioning in demand and technology, without creating any disruption of any sort and simultaneously ticking all the right boxes. To maintain the flow, a few of the best cloud designing practices are followed, they are as follows: 

  • Utilize advanced technologies as services that your team can incorporate in your projects, by delegating their setup to the cloud vendors and including them in your cloud application.
  • Go global by distributing your workload amongst numerous AWS regions to bring down the delay rate and make things quick at a fraction of a price.
  • Discard physical servers and use wireless modern techniques like cloud technologies for service operations and reduce the transactional cost of physical servers by restricting them to traditional computing activities.
  • Broaden up your horizon and dive into experiments with different configurations and more.
  • Follow the mindset and approach that you deem fit for your goals and achievements.
  1. Reliable architecture 

It is necessary to encompass a reliable and effective architecture on AWS that enables a consistent workflow throughout the functionality of the application. There are several principles that one needs to look into while building cloud applications on AWS. They are as follows:

  • The system should enable an automatic recovery whenever a threshold is breached. With an effective automation process, the application can anticipate and conduct a remedy of the supposed failure before it affects the system.
  • A test run on all the procedures is necessary, which will help fix multiple failures before they happen in real-time. 
  • Reduce failure on overall workload by placing a large resource over multiple smaller ones. Scale horizontally to reduce any distribution of failures.
  • Monitor your service capacity based on your workload without “assuming” anything, as it is one of the common factors of on-premises failures.
  • Conduct any changes via automation, to track and review them throughout the process. 
  1. Security aspect 

Security has become a crucial aspect for applications to think of, especially cloud-based applications. This security pillar helps create a safe and secure environment for the application, keeping all the data, assets, and crucial information safe from all ends. There are a few factors that one must follow to maintain a secure platform while building cloud infrastructure architecture. 

  • Create a loop and traceability amongst the application and track activities in real-time.
  • Application of security and verification on all aspects and layers of the application.
  • Enforce strict authorization on all levels to interact with AWS resources.
  • Categorize data into security levels and limit access where necessary with high-level encryption.
  • Eliminate direct access to data with effective tools to reduce misuse of data. 
  • Conduct a drill to test emergency security features and automatic responses, and prepare for the right responses accordingly.
  1. Cost optimization

Cost Optimization is a crucial part of cloud-ready applications, mainly because it allows you to not only achieve the services at the lowest price point but also help predict the amount that will be spent in the future. It will also keep a tab on the necessary expansion and its expenses once the business takes off for good. 

Cost optimization is impossible without following a certain set of pillars, as stated below: 

  • Invest time and money in cloud financial management to learn more about it. 
  • Pay only for services that you use, and calculate the time that it takes on an average per day to further slash the cost.
  • Calculate the workload from the associated cost, and compare the data to increase the output and further cut down on things with little to no output, to increase functionality.
  • Allow AWS to cater to the heavy-lifting, and do not spend on unnecessary items that are not your forte, like IT infrastructure and all. 
  • Swiftly analyze the expenses and compare them to the collective and individual usage, workload and help optimize it to increase ROI.

Final Thoughts

With our thorough description of the AWS well-architected framework, you can easily build a cloud-ready application architecture on Amazon Web Services. The 5 pillars of operating a reliable, secure, and super cost-effective system will ensure a streamlined application construction, maintain a smooth workflow, and help create a well-groomed cloud-ready application architecture.

7 Reasons why companies are shifting to AWS cloud

Cloud migration to AWS means leaving behind a major hassle of on-premise resources and the traditional cloud infrastructure that organizations used to rely on. Not only is AWS a secure way for cloud migration, but is also a sustainable way to secure your data while deploying your workload.

AWS cloud migration was one of the leading practices in 2020. As the global pandemic rose, businesses were forced to choose a stable, remote setup for sustaining their businesses in the otherwise crashing market and securing their future in the e-commerce industry. The following factors contributed to their decision:   

  1. End-to-end security

Data security and privacy are two things that companies can never compromise on. Before AWS migration, customers must understand the AWS Shared Responsibility Model that the service follows. Here, AWS takes complete control over the technical features that it provides, including, but not limited to software, hardware, communication between the servers, etc. Methods like two-way authentication, data encryption, monitoring, and threat detection are all responsibilities that Amazon Web Services looks after. Meanwhile, the customer will keep an eye out for the services they opt for, and all the technicalities that come along with it, including the sensitivity of their data and all the regulations and laws attached to it. 

  1. Better cost management 

AWS has always been a step ahead in terms of cost management and creating packages for businesses and users only, based on the services and resources that they provide. When it comes to cloud migration, cost plays a vital role in luring potential clients towards AWS cloud migration services. 

Even startups, with unstable funding, can take advantage of the low-cost entry which otherwise would cost hundreds of thousands of dollars in services, configurations, and network equipment. Not only is this move to cloud beneficial from technical aspects, but also results in better cost management throughout your project, sitting well within your budget. 

  1. Scalability 

The ability to grow in an orderly manner is one of the major benefits of cloud migration on AWS. It is designed to expand as your business grows, and downscale as per your business’s requirements without any major infrastructural changes or loss of data. AWS cloud migration will be flawless on both ends. The option for scalability on AWS will enable you to handle the toughest and the most hectic hours of the day or night, without crashing the system or leaving loopholes for the system to corrupt. 

  1. Self-service model

With no physical hardware upgrades needed in an AWS cloud, organizations have complete control over the IT infrastructure. It enables them to work around the system without any restrictions and make swift changes to develop and deploy a faster and effective application for the client. To further enable organizations to maintain smooth operations, they can invest in a cloud management platform (CMP) that will overlook operations and maintain stability within the system.

  1. Compliance

Another bigger advantage of AWS server migration service is its AWS compliance program, where it offers a high-end security system with compliant packages curated solely to cater to the needs of the clients based on their industry. But while the AWS cloud migration takes clients towards a more compliant environment, organizations must be prepared with a set of AWS certified IT professionals to maintain it without leaving it exposed in any way.

  1. Lower latency

Amazon Web Services will decrease latency via AWS Direct Connect which allows you to link up your on-premises and private workload to an available AWS data center via your internet connection. There are numerous AWS data centers located around the globe to reduce latency, and so far it has done a tremendous job in maintaining a smooth path of migrating your existing applications to the AWS cloud.

  1. Disaster recovery

Cloud migration and data handling is a risky process, and if not done effectively, can lead to severe consequences for the organization, which also includes losing a ton of data. This is where AWS steps in; precisely the thing about AWS which draws in clients from across the globe. Its ability to handle the toughest man-made and technical storms that make their way towards the cloud and the data stored within. But migrating your existing applications to the AWS cloud must be handled by an IT personnel familiar with the AWS cloud migration process. 

FAQs for Reasons why companies are shifting to AWS cloud

AWS cloud is a secure and sustainable platform for businesses and individual users running digital applications and websites. It is a cost-effective method, catering to all budgets and creating growth opportunities as things go along the way.

The possibility of growth, scalability, and a secure platform for businesses has encouraged businesses to practice the AWS cloud migration as they make their way into the futuristic form of cloud computing and technology.

Top 10 Tips for Cost Optimization in AWS

To start with, Amazon web services is an Infrastructure as a Service also known as IaaS which offers a variety of services. AWS is an extensive and evolving cloud computing platform that offers organizational tools such as database storage, compute power, and content delivery services.  

Cloud computing allows you to save significant costs once your infrastructure is set up and data migration is completed. Even after this, it is advised that you optimize your costs to avoid any miscalculations or surprises. Cost optimization in AWS not only allows you to refine costs it also improves the system over its life cycle resulting in maximizing your return on investment. In this context,  we have listed 10 best practices and handy tips to optimize AWS cost and performance for your business.

1. Select the Right S3 Storage Class

Amazon Simple Storage is an AWS storage service that enables your cloud to be extremely reliable, scalable, and secure. Amazon offers six tiers of storage at various price points. To determine which tier is best suited for business you can depend on factors such as usage and accessibility of your data and retrieving data in case there is a disaster. The lower the tier the more hours it will require to retrieve data. 

AWS S3 Intelligent Tier case is one of the six tiers being offered. The plus point in this tier is that it automatically analyzes and moves your data to the appropriate storage tier. S3 Intelligent Tier further helps inexperienced developers to optimize the cost of cloud-based storage.  This class saves you an immense amount of cost by placing objects based on changing data patterns. If you know your data patterns, you can combine that with a string Lifecycle policy to select the perfect storage classes for your entire data. 

Since various classes will break down your costs differently, an accurate and calculated storage class will result in guaranteed cost savings.

2. Choose the Right Instances for Your Workloads

When it comes to instances, you can choose from different instance types according to your costs and configurations. In this regard using AWS instance scheduler can be very helpful.  Selecting the wrong instance will only increase your costs as you will end up paying for storage that you do not even require. This false decision can also make you end up underprovisioning. Which means you have a limited capacity to handle the workload and data. There is always an option to either upgrade or downgrade, depending on your business need, or move to different instance options and types. Staying up to date on this will help you save money and reduce costs in the long run.

3. Track, Monitor, and Analyze Cloud Usage

There are different tools available to monitor and track instance metrics and data. To plan your budget accordingly you should have a clear understanding of your data usage. An assessment of your workload will help you in making that decision. The workload can be easily assessed with the data gathered. If there is a need then the instance size can be scaled up or lowered.

 Amazon trusted advisor is one of the tools that you can use. This tool keeps a weekly check on the unused resources while also helping you optimize your research usage. 

These tools also provide real-time guidance for the users to assist in restricting the resources used. There is also a timely update to assure the safety and security of data. Naturally, cost optimization is also addressed.

4. Purchase Reserve and Spot Instances

Purchasing Reserved Instances is a simple way to reduce AWS costs. But it can also be an easy way to increase AWS costs if you don’t employ the Reserved Instance as much as you expected to or choose the wrong type of Reserved Instance. Therefore, rather than suggesting that purchasing Reserved Instances is one of the best practices for AWS cost optimization, we’re going to recommend the effective management of Reserved Instances as an AWS cost optimization best practice—effective management consisting of weighing up all the variables before making a purchase and then monitoring utilization throughout the reservation’s lifecycle.

Reserved instances also let you purchase a reservation of capacity for a one or three-year duration. In this manner you pay a much lower hourly rate than on-demand instances, reducing your cost up to 75% on cloud computing costs.

5. Utilize Instance Scheduling

It is essential to ensure that all non-critical instances are only started when they need to be used. You can schedule start and stop times for such instances as required in software development and testing. For example, If you work in a 9-to-5 environment, you could save up to 65% of your cloud computing costs by turning these instances on between 8 AM and 8 PM during working hours.

By monitoring and checking up on the metrics it can be determined in the process where the instances are used more frequently, there is always a chance that the scheduling can be interrupted, and that also when access to the instances is required.  It’s worth pointing out that while instances are scheduled to be off, you are still being charged for EBS volumes and other services attached to them. 

6. Get The Latest Updates on Your Services

AWS strives to assign cloud computing for personal and enterprise use. They are always updating their products and introducing features that improve the performance of services. When AWS announces newer versions of instances, they consistently feature better performance and improved functionality. Upgrading to these latest generations of instances saves you money and gives you improved cloud functionality.

7. Use Autoscaling to Reduce Database Costs

Autoscaling automatically monitors your cloud resources and then adjusts them for optimum performance. When one service requires more computing resources, it will ‘borrow’ from idle instances. This option then automatically scales down resource provision when demand eases. In addition to this auto-scaling also lets you adjust scaling on a schedule for predictable and recurring load changes. 

8. Cleaning Up EBS Volumes

Elastic Book Store (EBS) is the volume for storage that all the Amazon EC2 instances are using. These are added to your monthly bill, whether they are idle or being used. If these blocks are left lying idle, they will contribute to your expenses even when the EC2 instances are decommissioned. Deleting unattached EBS blocks when decommissioning instances will cut your storage costs by up to half.

There could be thousands of unattached EBS volumes in your AWS Cloud, depending on how long your business has been operating in the cloud and the number of instances launched without the delete box being checked. It is definitely one of our AWS cost optimization best practices to consider, even if your business is new to the AWS Cloud.

9. Carefully Manage Data Transfer Costs

There is always a cost linked with transferring your data to the cloud. Whether it is a transfer between AWS and the internet or between different storage services,  you will have to pay a cost. Transfer costs with the cloud providers can add up quickly in this process. 

To manage this better you should design your infrastructure and framework so that data transfer across all the AWS is optimized. You should be able to complete this transfer with the least amount of transfer charges possible.

10. Terminate Idle Resources

The term “zombie assets” is most is used to describe any unused asset contributing to the cost of operating in the AWS Cloud.  Other assets that contribute in this category are components of instances that were activated when an instance failed to launch, unused Elastic Load Balancers., obsolete snapshots, and unattached EBS volumes. A problem businesses face that when they are trying to implement AWS cost optimization best practices is that some unused assets are difficult to find. For example, unattached IP addresses are sometimes difficult to locate in AWS System Manager, Any unused asset that contributes to your overall AWS expenses is a ‘zombie asset’. There are tools like CloudHealth that will help you identify and terminate zombie assets that contribute to your monthly bill. Anything you don’t use and isn’t planning to use in the future should be deleted with the help of such tools.  Such tools will help you reduce costs by deleting idle load balancers.

In conclusion:

With a continuing need for businesses to take a position within the latest, competitive, and result-oriented technology, it becomes important to seem at cost-saving tools and factors.  AWS offers you powerful cloud computing tools you can use to transform your business and its needs. But if you are not so proficient in using AWS services and tools, AWS can cost you a lot of money. These AWS cost optimization tips above will help you reduce the expenses of using the AWS platform. Cost optimization in AWS is a continuous process.  You can’t perform it once and then never visit it again. You should continuously monitor your resource usage and instance status to make sure you only pay for the assets you require. 

Therefore, try these AWS cost optimization best practices and get ready to optimize your cost without compromising performance.

Top 3 Practical Use Cases of Amazon S3 Intelligent Tiering

Businesses large and small are rapidly becoming cloud-native, leaving on-premise data centers behind. Why? A major reason is no requirement for storage hardware and a much more efficient running of mission-critical workloads and databases. However, many businesses that are new to the cloud or even those that are already on the cloud, find themselves battling with rising cloud costs. As they scale and begin facing unpredictable or undefined workloads, operational inefficiencies are more likely to appear within their cloud infrastructure, which adds to their cloud bill. 

What is S3 Intelligent Tiering & who is it for?

Companies that adopted or migrated to AWS cloud, can easily save on their cloud bill with efficient governance, and intelligent tiering using Amazon S3. This AWS feature is especially suited for businesses that are new to managing cloud storage patterns, and lack experience therein; or, are more focused on growing the business and have little to no time or resources dedicated to optimizing cloud operations and storage. S3 intelligent tiering optimizes storage costs automatically based on changing data access patterns, without impacting application performance or adding to overhead costs. 

Before we move on to discuss some of the practical use cases of S3 intelligent tiering, let’s learn a bit about how it actually works. S3 intelligent tiering stores objects based on how frequently they are accessed. It comprises of two access tiers, one that is optimized for frequent access, and another for infrequent access. The latter is also known as the ‘lower-cost tier’. S3 intelligent tiering automatically move less frequently used objects – e.g. those that have not been accessed for 30 consecutive days – to this tier, by continuously monitoring data access patterns. 

Let’s talk about the top 3 use cases where cloud-first businesses can cut costs and drive savings using S3 intelligent tiering. 

#1 Understanding Storage Patterns

Here’s a rough estimate of AWS storage costs: if your business requires 1PB of data storage, this will cost you around $300,000 annually in storage costs if you use the S3 standard. If you’re new to the cloud or just starting to experiment with cloud storage options, you may observe a rise in your AWS cloud bill. This usually happens due to a lack of understanding of how and when your data access needs change. S3 storage offers you lifecycle policies and S3 storage class analysis that tells you when to move your data from one access tier to another, and save on your AWS spend. 

S3 Intelligent tiering helps you optimize your storage automatically by moving data between the frequent and infrequent access tiers. This means you will save money that would otherwise be used to store dormant data. The frequent access tier charges you for data hosting on standard S3 storage, whereas, the infrequent or archive access tier incurs lower costs of storage. In addition, when using S3 standard storage, you don’t be charged extra for transferring your data between access tiers. This also helps in keeping costs low. This means, if you’re unsure about your access patterns and data use, the S3 standard storage would be the ideal option for you. 

#2 Managing Unpredictable Workloads

Don’t know when your data workloads may increase or reduce? S3 intelligent tier is a perfect way to manage your cloud storage if you need to access assets intermittently from your cloud-based database. With flexible lifecycle policies, intelligent tiering automatically decides which data must be placed in which tier (frequent or infrequent access). This can be helpful in many scenarios, e.g. when building a database for a school,  accessing exam data would be infrequent since it will not be needed for a large portion of the school term. So this data would be moved to the infrequent access tier after consecutive 30 days of dormancy.

Similarly, in many companies, AWS S3 intelligent tiering can help cut cloud costs. Most employees store their data using different applications and more often than not forget about that data until a day comes when they need it. So if you were to use standard S3 storage only, it would incur huge data storage costs without any meaningful ROI. With intelligent tiering, you can manage what data are you actively charged for, and the dormant or infrequently used data can be moved to the lower-cost tier. 

For unpredictable, dynamic, or rapidly changing data workloads, S3 intelligent tiering serves as a powerful tool that helps ensure data availability as needed, upholding performance, and optimizing cloud storage costs. 

#3 Complying with Regulations

When working with clients and partners within the European Union (EU) region, one thing that most providers and companies have to comply with is General Data Protection Regulation (GDPR). 

GDPR harmonizes data protection and privacy laws and lists down a number of rules when it comes to handling users’ data. One of those rules talks about data erasure – i.e. private user data should be erased from your databases and websites after a certain period of time or a certain period of data dormancy. 

If you use S3 intelligent tier storage to comply with GDPR, it can save on your company’s AWS cloud bill, and optimize your storage without compromising on performance. 

If a user does not access their data for some time, it will be moved to the lower-cost storage tier, and will not cost you as much as S3 standard storage. S3 also allows you to set your own lifecycle policy where you can decide the duration of active data storage. For instance, you can choose to keep your users’ data in the frequent access tier for six months or up to a year, before it is moved to the infrequent access tier. Moreover, S3 intelligent tiering enables you to control mechanisms like access control lists and bucket policies to you always stay compliant with data security regulations. 

Long Story Short

Cloud storage incurs huge costs to companies that do not have optimized storage in place. As an AWS user, the best choice would be to opt for Amazon S3 intelligent tier storage if you find yourself looking at a high AWS cloud bill each month. With varying data workloads, lack of experience in understanding cloud storage and compliance to regulations, S3 intelligent tiering helps you optimize s3 data costs and keep cloud costs in check

6 Keys for Cutting Costs and Boosting Performance on AWS

Amazon Web Services (AWS) is one of the most powerful, robust, & widely adopted cloud platforms with the potential to dramatically reduce your infrastructure costs, deliver faster development and innovation life cycles, and increase efficiency. However, mere adoption is not enough. If your workloads and processes aren’t built for high performance and cost optimization, you could not only miss out on these benefits but quite possibly end up overspending in the cloud by up to 70%.

From cloud sprawl and difficult-to-understand cloud pricing models to failing to right-size your environment or keep pace with AWS innovation — you may face many challenges on your journey to optimization. But through the adoption of some best practices and the right help, you can get the most from your AWS cloud.

Let’s break down some of these best practices for you:

1. Enable transparency with the right reporting tools

The first step should be to understand the sources and structure behind your monthly bills. You can use the AWS Cost and Usage Report (AWS CUR) to add your billing reports to an AmazonS3 bucket that you own, and receive a detailed breakdown of your hourly AWS usage and costs across accounts. It has dynamic columns that populate depending on the services you use.  It will be helpful for you to understand methods of AWS cost optimization.  

To level up your optimization through deeper analysis, AWS recommends Amazon CloudWatch – Collect and track metrics, monitor log files, set alarms, and automatically react to changes in AWS resources.

2. Closely monitor your cost trends

Over time, as you begin to adopt AWS technologies and simultaneously monitor their costs, you will start noticing the trends and patterns in your cost. Keeping a close eye on these trends on a regular basis can help you avoid any long-term or drastic cost-related red flags. In addition to monitoring the trends, it is also important that you understand and investigate the associated causes for the spikes and dips through AWS cost explorer. This is where an AWS Trusted Advisor can be a huge help, as they can give you personalized recommendations to optimize your infrastructure, and help you follow best practices for AWS cost management.

3. Practice Cloud Financial Management

Another key factor that helps with effective AWS cost management is the AWS Cloud Financial Management (AWS CFM). Implementing AWS CFM in your organization will enable your business to unlock the true value and growth it brings from a financial perspective. For successful AWS cost management, it is essential for teams across an enterprise to be aware of the ins and outs of their AWS spending. You can dedicate resources from different departments for this cause. For instance, having experts from finance, technology, and management can help establish a sense of cost awareness across the organization

4. Use accounts & tags to simplify costs and governance

It is crucial to learn when to use account separation and how to apply an effective tagging strategy. Be sure to take advantage of AWS’s resource tagging capabilities, and delineate your costs by different dimensions like applications, owners, and environments. This practice will help you gain more visibility into how you’re spending. 

5. Match consumption with demand

The flexibility and scalability of cloud platforms like AWS allows you to provision resources according to your downstream needs. When right-sizing your resources to match demand, be mindful of horizontal and vertical over-scaling as well as run-time on unused or old resources. You can save significantly on costs incurred from wasted resources, by tracking your utilization and turning off old instances. AWS Cost Optimization using AWS Cost Explorer – See patterns in AWS spending over time, project future costs, identify areas that need further inquiry like getting a report of EC2 instances that are either idle or have low utilization, similarly checking EBS volumes and S3 buckets using S3 Analytics.

6. Tap into expertise and analytics for your AWS environment

Seek third-party expertise for technology cost management, instead of reallocating your valuable technology resources to budget analysis. VentureDive offers a comprehensive solution with support and expert guidance that will keep your AWS workloads running at peak performance while optimizing your cost savings.

Our Optimizer Block for AWS enables you to cut costs, boost performance, and augment your team with access to a deep pool of AWS expertise. Through constant ongoing cost and performance optimization, you have the confidence that your financial investment is being spent wisely, and that you are maximizing performance from your AWS workloads. And with 24x7x365 access to AWS experts, you know you’ll be ready for whatever this changing market throws at you next. 

icon-angle icon-bars icon-times