<?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: Pragya Sapkota</title>
    <description>The latest articles on DEV Community by Pragya Sapkota (@pragyasapkota).</description>
    <link>https://dev.to/pragyasapkota</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%2F693104%2F74b64746-c699-47aa-9159-8ecff78d734b.jpeg</url>
      <title>DEV Community: Pragya Sapkota</title>
      <link>https://dev.to/pragyasapkota</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pragyasapkota"/>
    <language>en</language>
    <item>
      <title>Phishing: The Complete Guide to Cyber Deception and Protection</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Sun, 31 Aug 2025 14:24:22 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/phishing-the-complete-guide-to-cyber-deception-and-protection-ag5</link>
      <guid>https://dev.to/pragyasapkota/phishing-the-complete-guide-to-cyber-deception-and-protection-ag5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Phishing: the art of convincing you to hand over your keys while you hold the door open for the thief. No fishing rod required — just a convincing email and a dash of misplaced trust.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Phishing is one of the oldest — and still one of the most effective — cybercrime techniques. Although the basic trick is simple (pretend to be someone trustworthy to get people to hand over secrets), attackers have refined the method into many forms that target individuals, executives, IT staff, and entire organizations.&lt;/p&gt;

&lt;p&gt;This article explains what phishing is, how it evolved, the main variants, the psychology and technical methods attackers use, notable real-world incidents, how to detect phishing, how to prevent and respond to attacks, legal consequences for attackers, and recent trends — including AI-powered scams.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is phishing?
&lt;/h1&gt;

&lt;p&gt;Phishing is a form of fraud that uses social engineering and technical deception to trick people into revealing sensitive information (passwords, credit-card numbers, identity data), installing malware, or performing actions (e.g., wiring money) that benefit the attacker. Phishing commonly uses email, but can occur over SMS, phone calls, social media, web pages, QR codes, and other channels. The key element is deception: the victim believes they are interacting with a trusted party.&lt;/p&gt;

&lt;h1&gt;
  
  
  A short history and evolution
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Early Days (1990s-2000s)&lt;/strong&gt;: Basic “spray-and-pray” email scams that impersonated banks or online services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Large-scale takedowns and prosecutions (the 2000s)&lt;/strong&gt;: Law enforcement actions like Operation Phish Phry (2009) demonstrated both the scale of organized phishing rings and that international coordination could disrupt them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Targeted, high-impact incidents (the 2010s)&lt;/strong&gt;: Spear-phishing became an entry vector for major breaches (e.g., RSA in 2011). Attackers combined targeted social engineering with malware and lateral movement to access critical systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Diversification and business impact (the 2010s-2020s)&lt;/strong&gt;: Business Email Compromise (BEC), supply-chain intrusions, and SIM-swap/SOCIAL engineering fraud (e.g., the 2020 Twitter cryptocurrency scam) highlighted that phishing can produce huge financial and reputational losses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI era (the 2020s-2025)&lt;/strong&gt;: Attackers increasingly use AI to create convincing text, synthesize voices, and produce deepfake media — enabling more realistic phishing across channels. Reports from industry and law enforcement warn that AI-assisted scams and new vectors (QR codes, automated credential harvesting) are accelerating.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Types of Phishing — What to Watch for
&lt;/h1&gt;

&lt;p&gt;Below are the most common and important variants, with short descriptions and examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mass (commodity) Phishing
&lt;/h3&gt;

&lt;p&gt;Generic email blasts impersonating banks, delivery services, or major platforms. Goal: steal credentials or deliver malware at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Spear Phishing
&lt;/h3&gt;

&lt;p&gt;Targeted emails tailored with personal details (job title, colleagues’ names) to trick a specific person. Common initial vector for high-value breaches (e.g., RSA 2011).&lt;/p&gt;

&lt;h3&gt;
  
  
  Whaling
&lt;/h3&gt;

&lt;p&gt;Spear-phishing aimed at senior executives or high-value targets (CFO, CEO) to obtain approvals or payments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Business Email Compromise (BEC)
&lt;/h3&gt;

&lt;p&gt;Fraud where attackers spoof or compromise corporate emails to instruct finance teams to wire money or reveal invoice details. Losses can be substantial and often end up in money-mule networks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smishing (SMS Phishing)
&lt;/h3&gt;

&lt;p&gt;Fraud delivered by text messages (SMS), often impersonating delivery services, banks, or authentication systems to get victims to click links or reply with codes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vishing (Voice Phishing)
&lt;/h3&gt;

&lt;p&gt;Phone-based scams where attackers pose as bank staff, IT help, or executives—increasingly combined with voice cloning to impersonate known figures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clone Phishing
&lt;/h3&gt;

&lt;p&gt;Attackers copy a legitimate email previously sent to the victim, replace the link/attachment with a malicious one, and resend from an address that looks extremely similar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quishing (QR Code Phishing)
&lt;/h3&gt;

&lt;p&gt;QR codes that point to malicious landing pages or trigger malicious actions. APWG and industry reports highlight rising QR use in phishing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Credential-harvesting Pages and Homograph Attacks
&lt;/h3&gt;

&lt;p&gt;Fake websites that mimic real sites (look-alike domains, internationalized domain homographs) to collect usernames and passwords.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fkd4br2wylb068xoxqbh4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fkd4br2wylb068xoxqbh4.jpg" alt="Types of Phishing" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How Phishing Attacks Work — The Anatomy
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reconnaissance&lt;/strong&gt;: The Attacker gathers data (public profiles, organization charts, leaked credentials) to craft believable messages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lure/Delivery&lt;/strong&gt;: Email/SMS/phone call contains the lure: an urgent invoice password reset, delivery notice, HR message, etc. Link or attachment is the bait.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;: Victim clicks a link, opens an attachment, replies with credentials, inputs data into a fake page, or transfers funds. Attachments may contain malware (ransomware, remote access trojans) or scripts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exploitation and Persistence&lt;/strong&gt;: If successful, the attacker uses credentials or malware to move laterally inside networks, escalate privileges, exfiltrate data, or issue fraudulent payments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monetization&lt;/strong&gt;: Sell data, launcher funds through mule accounts, demand ransom, or perform secondary fraud (identity theft).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjwa81xifz289970pcprk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjwa81xifz289970pcprk.jpg" alt="Phishing Anatomy" width="800" height="931"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Psychological Tactics Attackers Use
&lt;/h1&gt;

&lt;p&gt;Phishing succeeds because it exploits predictable human reactions. Common psychological levers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Urgency/Scarcity&lt;/strong&gt;: “Act now — your account will be closed.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authority&lt;/strong&gt;: Impersonates bosses, banks, government agencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Social Proof/familiarity&lt;/strong&gt;: Uses familiar logos, names, or language patterns&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Curiosity/fear&lt;/strong&gt;: “See this invoice/security alert”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reciprocity/obligation&lt;/strong&gt;: Requests that feel like a favor from a colleague&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contextual relevance&lt;/strong&gt;: Tying messages to current events (tax season, COVID relief, payroll changes) to increase plausibility.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fprjg0i0lvivmru1ue7ca.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fprjg0i0lvivmru1ue7ca.jpg" alt="Phishing Tactics" width="800" height="835"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Notable Real-world Phishing Incidents (Brief Cases)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operation Phish Phry (2009)&lt;/strong&gt;: An International phishing ring targeted customers with fake bank sites; nearly 100 people were charged in the U.S. and Egypt. Demonstrated a serious and international coordination of phishing crime.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RSA breach (2011)&lt;/strong&gt;: Attackers used a spear-phishing email with a malicious Excel attachment; the compromise of SecurID seed data had cascading impacts for many defense and government contractors. The incident is often cited as an archetypal APT/spear-phishing success.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Target breach (2013)&lt;/strong&gt;: Attackers obtained credentials from a third-party HVAC vendor (initial access via compromised credentials and possibly phishing vectors) and installed POS malware, compromising millions of payment cards. The breach highlighted third-party risk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Podesta/2016 political email hacks&lt;/strong&gt;: High-profile example where credential-harvesting emails led to politically significant data leaks. (Public reporting and investigations show phishing played a central role.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Twitter Hack (July 2020)&lt;/strong&gt;: Social engineering and phone-based SIM/SMS vectors were used to gain high-privilege access to a major platform, facilitating cryptocurrency scamming and high-profile account takeovers. Subsequent regulator reports analyzed weaknesses in account recovery and staff processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Voice Deepfake Scams (2019–2024)&lt;/strong&gt;: Multiple documented cases where attackers used cloned voices to convince employees to transfer funds (e.g., a 2019 case of £243k loss; more recent executive-targeted deepfake calls recorded in 2024). These incidents illustrate how AI voice synthesis is increasing the risk.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Detect Phishing — Practical Signs
&lt;/h1&gt;

&lt;p&gt;Look for combinations of the following red flags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unexpected messages that pressure you to act immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sender’s email address that doesn’t match the organization (tiny differences or extra characters). Hover over addresses/links to inspect the real URL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Poor spelling/ grammar combined with official logos — low-quality impersonations. (Sophisticated attacks, however, can be flawless.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generic salutations (“Dear customer”) when you expect personalization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requests for secrets, one-time passcodes, or to disable multi-factor authentication.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attachments with unusual file types (.exe, .scr, .js, or Office files with macros).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Links that resolve to different domains than they display (check the browser status bar before clicking).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unexpected or out-of-bank requests for wire transfers or payroll changes — verify by phone using a known number.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unusual domain characters (Punycode/internationalized domain names that mimic letters).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;QR codes in public places or emails that you didn’t request — they hide the destination until scanned.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fseh3py0eyxrtwucz6tc0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fseh3py0eyxrtwucz6tc0.jpg" alt="How to detect  phishing?" width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Preventive Measures — Individuals
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Think before you click&lt;/strong&gt;: Pause and inspect sender, link, and context. If in doubt, call the organization using a known number.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use multi-factor authentication (MFA)&lt;/strong&gt;: MFA reduces risk from stolen passwords, especially app-based or hardware MFA (authenticator apps, FIDO keys). Note: MFA is not foolproof (MFA push fatigue and SIM swap attacks exist), but it significantly raises the bar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep software updated&lt;/strong&gt;: Patches fix exploitable bugs that phishing-delivered malware might exploit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid opening unexpected attachments&lt;/strong&gt;: Verify first via a separate channel (phone, known email).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use password managers&lt;/strong&gt;: They prevent credential reuse and auto-fill only on exact domains (limits credential harvesting).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verify payment requests by an independent channel&lt;/strong&gt;: Don’t rely solely on email for wire instructions or invoice changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be careful with social media oversharing&lt;/strong&gt;: Less public personal data reduces the effectiveness of spear-phishing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Report suspicious messages&lt;/strong&gt;: Forward phishing emails to your provider, employer security team, or report to local cybercrime authorities.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Furma4se6njvrgxn93j5v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Furma4se6njvrgxn93j5v.jpg" alt="Cybersecurity Strategies" width="800" height="764"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Preventive &amp;amp; Detective Measures — Organizations
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Technical Controls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Email authentication&lt;/strong&gt;: Enforce SPF, DKIM, and DMARC to make it harder to spoof corporate domains.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Secure inbound email gateways&lt;/strong&gt;: Use anti-phishing filters, URL rewriting, and sandboxing for attachments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MFA &amp;amp; strong authentication&lt;/strong&gt;: Prefer phishing-resistant MFA (security keys, FIDO2/passkeys) for high-privilege accounts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Endpoint protection &amp;amp; EDR&lt;/strong&gt;: Detect malicious attachments or unusual lateral movement quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web filtering &amp;amp; DNS security&lt;/strong&gt;: Block known malicious domains and use DNS-level protection to stop users from reaching credential-harvesting sites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolate risky attachments&lt;/strong&gt;: Convert Office attachments to safe formats or open attachments in sandboxed viewers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Organizational &amp;amp; human measures
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phishing awareness training&lt;/strong&gt;: Combine education with periodic simulated phishing to measure and improve behavior.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incident response playbooks&lt;/strong&gt;: Predefine steps to quarantine accounts, rotate credentials, and trace payments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Least privilege &amp;amp; segmentation&lt;/strong&gt;: Limit access to critical systems and make lateral movement harder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Third-party risk management&lt;/strong&gt;: Vet vendors, require security controls, and monitor vendor access closely (Target breach lessons).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transaction verification controls&lt;/strong&gt;: For payments, require multi-step approvals and independent verification for wire transfers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Logging and monitoring&lt;/strong&gt;: Keep audit trails for email and financial transactions and monitor for suspicious patterns.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4h5b8hgybaczrpgnutis.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4h5b8hgybaczrpgnutis.jpg" alt="Cybersecurity Measures" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Incident Response — A Concise Checklist
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disconnect and contain&lt;/strong&gt;: Isolate infected hosts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preserve evidence&lt;/strong&gt;: Keep logs, emails, and artifacts for forensics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reset credentials&lt;/strong&gt;: Revoke session tokens and rotate passwords for compromised accounts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Notify stakeholders&lt;/strong&gt;: Legal/compliance, affected customers, and regulators as required.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trace and recover funds&lt;/strong&gt;: If money was sent, immediately contact banks and law enforcement — time matters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Post-incident review&lt;/strong&gt;: Identify root cause, patch controls, and update training.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fz3fpokvhgcrx0kowdfdu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz3fpokvhgcrx0kowdfdu.jpg" alt="Incident Response Protocol" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Consequences For Victims
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Financial loss&lt;/strong&gt;: Direct theft (wire fraud, BEC), secondary fraud, and ransomware payments. FBI/IC3 and industry report document billions in annual losses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Identity theft and fraud&lt;/strong&gt;: Stolen PII is sold or used for new-account fraud.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operational disruption&lt;/strong&gt;: Malware, ransomware, or loss of critical system access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reputational harm&lt;/strong&gt;: Public breaches damage customer trust and market valuation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regulatory &amp;amp; legal costs&lt;/strong&gt;: Data breach notifications, fines, and litigation exposure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Legal Consequences For Attackers
&lt;/h1&gt;

&lt;p&gt;Phishing and related crimes are prosecuted under multiple statutes depending on jurisdiction and the nature of the offense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Computer/hacking statutes&lt;/strong&gt;: In the U.S., the Computer Fraud and Abuse Act (CFAA) is a common basis for federal charges involving unauthorized access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fraud &amp;amp; wire fraud&lt;/strong&gt;: Charges for monetary theft (wire fraud, bank fraud) are commonly used in BFC and large-scale phishing prosecutions (e.g., Operation Phish Phry prosecutions).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Money-laundering &amp;amp; identity-theft statutes&lt;/strong&gt;: Used to target the financial flows and identify crimes that follow initial phishing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;International cooperation &amp;amp; extradition&lt;/strong&gt;: Many large phishing rings operate cross-border, and law enforcement operations show international coordination (FBI, Europol, national agencies).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prosecutors have had notable successes (Operation Phish Phry and other takedowns), but enforcement faces challenges: jurisdictional complexity, money-launderers, mule networks, and the ability of attackers to move quickly.&lt;/p&gt;

&lt;h1&gt;
  
  
  Recent Trends and What’s Coming Next (2023–2025)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI-assisted phishing&lt;/strong&gt;: Attackers use large language models to craft highly convincing emails and chat messages, reducing the time to create personalized lures. Voice synthesis and deepfakes let attackers impersonate executives or family members on calls. Industry reports and news outlets documented deepfake-enabled and AI-amplified scams in recent years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;QR code phishing (quishing)&lt;/strong&gt;: Phishers embed malicious URLs in QR codes shared in emails, posters, or even invoices — APWG reports an uptick in QR-based campaigns.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Credential stuffing phishing combos&lt;/strong&gt;: Using breached passwords combined with phishing to gain a second factor or to trick users into reusing credentials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Targeted supply-chain and vendor attacks&lt;/strong&gt;: As seen in Target and other breaches, attackers increasingly target third-party vendors to gain access to larger victims.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scale and automation&lt;/strong&gt;: Phishing infrastructure is commoditized; attackers can buy templates, spoofing services, and money-laundering “drop” services, increasing volume and reducing skill required.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regulatory &amp;amp; enforcement shifts&lt;/strong&gt;: Governments and regulators are increasing focus on cybercrime, fraud prevention, and corporate responsibility — expect more cross-border cooperation and penalties for lax security.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Recommended Reading &amp;amp; Authoritative Resources
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;APWG Phishing Activity Trends Reports (quarterly)&lt;/strong&gt; — tracking phishing volume and tactics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FBI/IC3 Annual Report&lt;/strong&gt; — statistics on phishing, BEC, and losses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Microsoft Digital Defense Report&lt;/strong&gt; — analysis on AI and modern phishing trends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Krebs on Security&lt;/strong&gt; — deep investigative reporting on major breaches and supply-chain incidents (e.g., Target vendor compromise).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Practical Checklist — “Before you click” (Summary for individuals)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Pause. Think: Why did I get this?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inspect sender address and hover links.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don’t open unexpected attachments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Call the sender on a known number to confirm payment or request changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use MFA and a password manager.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Report suspicious messages to your IT/security or national cybercrime authorities.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4fi7t5k174lf83966k6d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4fi7t5k174lf83966k6d.jpg" alt="Email Security Checklist" width="800" height="846"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Final Words
&lt;/h1&gt;

&lt;p&gt;Phishing attacks thrive on human impulse and evolving technology. Technical controls (MFA, email authentication, endpoint protection) are essential but not sufficient — the human factor, training, verification procedures, and effective incident response are what stop most phishing-driven disasters. As attackers adopt AI and new vectors (QR codes, voice cloning), defenders must combine technology, processes, and user education to keep pace.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Remember: if something smells phishy, it probably is. Trust your instincts, verify everything, and never give your password to anyone — not even to that “Prince” who promises you a yacht. Because in phishing, the only “catch of the day” you want is zero.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;p&gt;[1] Anti-Phishing Working Group, “Phishing Activity Trends Report,” APWG, 2024. [Online]. Available: &lt;a href="https://apwg.org/trendsreports/" rel="noopener noreferrer"&gt;https://apwg.org/trendsreports/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] U.S. Department of Justice, “Nearly 100 Arrested in International Phishing Scam — Operation Phish Phry,” DOJ Press Release, Oct. 2009. [Online]. Available: &lt;a href="https://www.justice.gov/opa/pr/nearly-100-arrested-international-phishing-scam" rel="noopener noreferrer"&gt;https://www.justice.gov/opa/pr/nearly-100-arrested-international-phishing-scam&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[3] RSA Security, “RSA SecurID Breach Analysis,” RSA, 2011. [Online]. Available: &lt;a href="https://www.rsa.com/en-us/blog/2011/rsa-securid-breach-analysis" rel="noopener noreferrer"&gt;https://www.rsa.com/en-us/blog/2011/rsa-securid-breach-analysis&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[4] Twitter, “An Update on Our Security Incident,” Twitter Security Blog, Jul. 2020. [Online]. Available: &lt;a href="https://blog.twitter.com/en_us/topics/company/2020/an-update-on-our-security-incident" rel="noopener noreferrer"&gt;https://blog.twitter.com/en_us/topics/company/2020/an-update-on-our-security-incident&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[5] L. Newman, “AI Voice-Cloning Scams in Financial Fraud,” Wired, Aug. 2023. [Online]. Available: &lt;a href="https://www.wired.com/story/ai-voice-cloning-scams/" rel="noopener noreferrer"&gt;https://www.wired.com/story/ai-voice-cloning-scams/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[6] Federal Bureau of Investigation, “2023 Internet Crime Report,” IC3, 2023. [Online]. Available: &lt;a href="https://www.ic3.gov/" rel="noopener noreferrer"&gt;https://www.ic3.gov/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[7] Microsoft, “Digital Defense Report 2023,” Microsoft Security, 2023. [Online]. Available: &lt;a href="https://www.microsoft.com/en-us/security/business/microsoft-digital-defense-report/" rel="noopener noreferrer"&gt;https://www.microsoft.com/en-us/security/business/microsoft-digital-defense-report/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[8] S. Abrams, “QR Code Phishing (Quishing) Attacks Surge in 2024,” BleepingComputer, May 2024. [Online]. Available: &lt;a href="https://www.bleepingcomputer.com/news/security/qr-code-phishing-on-the-rise/" rel="noopener noreferrer"&gt;https://www.bleepingcomputer.com/news/security/qr-code-phishing-on-the-rise/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[9] Verizon, “2023 Data Breach Investigations Report (DBIR),” Verizon Enterprise, 2023. [Online]. Available: &lt;a href="https://www.verizon.com/business/resources/reports/dbir/" rel="noopener noreferrer"&gt;https://www.verizon.com/business/resources/reports/dbir/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[10] A. Greenberg, “How John Podesta Got Hacked: The Phishing Email That Fooled Everyone,” Wired, Oct. 2016. [Online]. Available: &lt;a href="https://www.wired.com/story/phishing-podesta-email-hack/" rel="noopener noreferrer"&gt;https://www.wired.com/story/phishing-podesta-email-hack/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[11] B. Krebs, “Target Hackers Broke In via HVAC Company,” Krebs on Security, Feb. 2014. [Online]. Available: &lt;a href="https://krebsonsecurity.com/2014/02/target-hackers-broke-in-via-hvac-company/" rel="noopener noreferrer"&gt;https://krebsonsecurity.com/2014/02/target-hackers-broke-in-via-hvac-company/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[12] Google Threat Analysis Group, “AI-Generated Phishing Lures and Deepfake Scams,” Google TAG, 2024. [Online]. Available: &lt;a href="https://blog.google/threat-analysis-group/" rel="noopener noreferrer"&gt;https://blog.google/threat-analysis-group/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[13] B. Krebs, “BEC Scams and Phishing Toolkits Exposed,” Krebs on Security, Mar. 2023. [Online]. Available: &lt;a href="https://krebsonsecurity.com/2023/03/bec-scams-phishing-toolkits-exposed/" rel="noopener noreferrer"&gt;https://krebsonsecurity.com/2023/03/bec-scams-phishing-toolkits-exposed/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[14] J. Vincent, “AI-Powered Phishing Scams and Deepfake Threats,” The Verge, Nov. 2024. [Online]. Available: &lt;a href="https://www.theverge.com/ai/2024/ai-phishing-scams-deepfakes" rel="noopener noreferrer"&gt;https://www.theverge.com/ai/2024/ai-phishing-scams-deepfakes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[15] Anti-Phishing Working Group, “Q1 2024 Phishing Activity Trends Report,” APWG, 2024. [Online]. Available: &lt;a href="https://apwg.org/trendsreports/" rel="noopener noreferrer"&gt;https://apwg.org/trendsreports/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[16] Microsoft Security, “Anatomy of a Phishing Attack and Mitigation Strategies,” Microsoft Blog, 2023. [Online]. Available: &lt;a href="https://www.microsoft.com/en-us/security/blog/" rel="noopener noreferrer"&gt;https://www.microsoft.com/en-us/security/blog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[17] Europol, “Operation Phish Phry — Global Coordination Report,” Europol, 2010. [Online]. Available: &lt;a href="https://www.europol.europa.eu/" rel="noopener noreferrer"&gt;https://www.europol.europa.eu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[18] BBC News, “£243,000 Voice Deepfake Scam,” BBC, Sep. 2019. [Online]. Available: &lt;a href="https://www.bbc.com/news/technology-49579520" rel="noopener noreferrer"&gt;https://www.bbc.com/news/technology-49579520&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[19] Cornell Law School, “18 U.S. Code § 1030 — Computer Fraud and Abuse Act (CFAA),” Legal Information Institute, 2024. [Online]. Available: &lt;a href="https://www.law.cornell.edu/uscode/text/18/1030" rel="noopener noreferrer"&gt;https://www.law.cornell.edu/uscode/text/18/1030&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[20] Anti-Phishing Working Group &amp;amp; Microsoft, “Phishing Prevention and Mitigation Best Practices 2024,” APWG, 2024. [Online]. Available: &lt;a href="https://apwg.org/trendsreports/" rel="noopener noreferrer"&gt;https://apwg.org/trendsreports/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>phishing</category>
      <category>webdev</category>
      <category>cybersecurity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Telemetry and Tracing: A Comprehensive Overview</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Thu, 02 Jan 2025 08:48:14 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/telemetry-and-tracing-a-comprehensive-overview-4fj3</link>
      <guid>https://dev.to/pragyasapkota/telemetry-and-tracing-a-comprehensive-overview-4fj3</guid>
      <description>&lt;p&gt;We live in a time of complex distributed systems, where knowing what happens to an application in a certain environment is critical. But where can we obtain useful information about these systems’ development and functioning?&lt;/p&gt;

&lt;p&gt;The answer is &lt;strong&gt;Telemetry and Tracing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, let’s begin with what telemetry and tracing are. We will also look into some advantages of both, and how they could be put into place within the industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Telemetry?
&lt;/h2&gt;

&lt;p&gt;Telemetry is basically gathering, transmitting, and analyzing data from remote sources. In other contexts, it also refers to collecting information about the performance, health, and behavior of applications. It can be used for system performance monitoring, anomaly detection, and informed decisions on system optimization. The following are the main components of telemetry:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Data Collection
&lt;/h3&gt;

&lt;p&gt;The gathering of data from various sources, including application logs, system metrics, and user interactions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Data Transmission
&lt;/h3&gt;

&lt;p&gt;Transmits the collected data for analysis at a central place.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Data Analysis
&lt;/h3&gt;

&lt;p&gt;Processing and interpreting the collected data for meaningful insights.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fz7lw1av8apgjxpj3o20x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz7lw1av8apgjxpj3o20x.jpg" alt="Telemetry" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Tracing?
&lt;/h2&gt;

&lt;p&gt;Tracing is a specialized form of telemetry that focuses on tracking the execution of requests or transactions through a distributed system. It provides a detailed view of how requests flow through different components, helping to identify performance bottlenecks, errors, and dependencies. The aspects of tracing include the following:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Distributed Tracing
&lt;/h3&gt;

&lt;p&gt;Tracking requests as they propagate through multiple services and components.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Span Analysis
&lt;/h3&gt;

&lt;p&gt;Analyzing individual operations (spans) within a trace to understand their performance characteristics.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Dependency Analysis
&lt;/h3&gt;

&lt;p&gt;Identifying dependencies between different components and services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fcbzfc5hwzsl04r873ztj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fcbzfc5hwzsl04r873ztj.jpg" alt="Tracing" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Benefits of Telemetry and Tracing
&lt;/h2&gt;

&lt;p&gt;Needless to say, telemetry and tracing offer a multitude of benefits for organizations of all sizes. By providing valuable insights into application performance, behavior, and health, these tools enable teams to make data-driven decisions and optimize their systems. Let’s discuss some of these benefits in detail:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Improved performance
&lt;/h3&gt;

&lt;p&gt;With telemetry and tracing, we can pinpoint performance bottlenecks, such as slow database queries or inefficient network calls. By understanding where the system is spending most of its time, we can take targeted action to improve performance.&lt;/p&gt;

&lt;p&gt;Telemetry data can inform decisions about resource allocation, ensuring that resources are used efficiently and effectively. For instance, if a particular component is consistently underutilized, it may be possible to reallocate resources to other areas. Likewise, by identifying and addressing latency issues, telemetry and tracing can help improve the user experience and reduce application response times.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Enhanced Reliability
&lt;/h3&gt;

&lt;p&gt;With telemetry tools, we can continuously monitor system health and detect anomalies before they lead to failures. This proactive approach can help prevent outages and downtime. By identifying issues early on, teams can take corrective action before they escalate into major problems. This can help reduce the impact of incidents and improve overall system reliability.&lt;/p&gt;

&lt;p&gt;Since telemetry and tracing also help us identify dependencies between different components and services, we can design more fault-tolerant systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Simplified Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Tracing can help pinpoint the root cause of issues, making troubleshooting more efficient and effective. By understanding the flow of requests through the system, teams can identify the exact location of the problem.&lt;/p&gt;

&lt;p&gt;By quickly identifying and resolving issues, telemetry &amp;amp; tracing can help reduce the time to resolution, improving overall system availability. Ultimately, this faster troubleshooting leads to improved customer satisfaction, as users are less likely to experience disruptions or downtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Enhanced Decision-Making
&lt;/h3&gt;

&lt;p&gt;Telemetry and tracing also provide teams with the data they need to make informed decisions about system maintenance, upgrades, and resource allocation. This way, we can also understand how resources are being used, optimize their allocation, and avoid unnecessary costs. They can help ensure that systems meet or exceed service level agreements (SLAs), improving customer satisfaction and reducing penalties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Telemetry and Tracing Metrics
&lt;/h2&gt;

&lt;p&gt;Telemetry and tracing involve collecting and analyzing various metrics to gain insights into system performance and behavior. Let’s discuss some of the commonly used metrics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Request-Related Metrics
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Response Time
&lt;/h4&gt;

&lt;p&gt;The total time it takes for a request to be processed and a response returned, includes network latency, processing time, and other factors.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Error Rates
&lt;/h4&gt;

&lt;p&gt;The percentage of requests that result in errors or expectations. This metric helps identify issues with application logic, data integrity, or external dependencies.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Throughput
&lt;/h4&gt;

&lt;p&gt;The number of requests that can be processed per unit of time. This metric is often used to measure system capacity and performance under load.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Latency
&lt;/h4&gt;

&lt;p&gt;The time it takes for a request to travel from one component to another. This metric is particularly important for distributed systems with multiple components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource-Utilization Metrics
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. CPU Usage
&lt;/h4&gt;

&lt;p&gt;The percentage of CPU capacity that is being utilized by the application. High CPU usage can indicate performance bottlenecks or resource contention.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Memory Usage
&lt;/h4&gt;

&lt;p&gt;The amount of memory being consumed by the application. Excessive memory usage can lead to performance degradation or even crashes.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Network Usage
&lt;/h4&gt;

&lt;p&gt;The amount of network bandwidth being consumed by the application. High network usage can indicate network congestion or inefficient data transfer.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Disk I/O
&lt;/h4&gt;

&lt;p&gt;The amount of disk input/output operations performed by the application. Excessive disk I/O can be a sign of performance bottlenecks, especially for applications that rely heavily on disk-based storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom Metrics
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Business-specific metrics
&lt;/h4&gt;

&lt;p&gt;Metrics that are specific to the application’s domain or business objectives. Examples include sales volume, customer satisfaction ratings, and conversion rates.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Custom application metrics
&lt;/h4&gt;

&lt;p&gt;Metrics that are defined and collected within the application itself. This can include metrics related to specific components algorithms, or functionalities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Popular Telemetry and Tracing Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. OpenTelemetry
&lt;/h3&gt;

&lt;p&gt;OpenTelemetry is not tied to any specific vendor or technology, making it a flexible and adaptable choice for various environments. It provides a consistent API and SDKs for different programming languages, simplifying the process of instrumenting applications. They support exporting data to various backends, including Jaeger, Zipkin, Prometheus, and custom solutions. And since OpenTelemetry is developed and maintained by a large community of contributors, we can be sure of ongoing development and support.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Jaeger
&lt;/h3&gt;

&lt;p&gt;Jaeger is specifically designed for distributed tracing, making it well-suited for microservices architectures. It provides real-time visualization of traces, allowing teams to quickly identify and diagnose performance issues. Jaeger was designed to handle large-scale distributed systems and can scale horizontally to meet increasing demands. It can be used as a backend for OpenTelemetry, providing a powerful and scalable tracing solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prometheus
&lt;/h3&gt;

&lt;p&gt;Prometheus focuses on collecting and analyzing metrics, making it ideal for monitoring infrastructure and application performance. It provides a powerful query language (PromQL) for querying and analyzing metric data. The tool uses a time series database to store metric data, making it efficient for storing and querying large amounts of data. The best part is that it can be configured to trigger alerts based on specific metric conditions, helping teams proactively address issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Zipkin
&lt;/h3&gt;

&lt;p&gt;Zipkin is another popular distributed tracing system that provides similar capabilities to Jaeger. It is an open-source project with a large community of contributors. We can integrate it with a variety of systems, including Spring Cloud, Twitter Finagle, and Dubbo. The tool has a user-friendly interface that makes it easy to visualize and analyze traces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Telemetry and Tracing
&lt;/h2&gt;

&lt;p&gt;Let’s discuss in detail the best practices for telemetry and tracing.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Instrumentation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Strategic Placement
&lt;/h4&gt;

&lt;p&gt;Carefully consider where to instrument your application to collect the most relevant data. For example, you may want to instrument at the entry and exit points of functions, around critical code paths, or at the boundaries of microservices.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Minimal Overhead
&lt;/h4&gt;

&lt;p&gt;Aim to minimize the performance overhead of instrumentation to avoid impacting the application’s behavior. Use lightweight libraries and techniques to reduce overhead.&lt;/p&gt;

&lt;h4&gt;
  
  
  c. Context Propagation
&lt;/h4&gt;

&lt;p&gt;Ensure that context is propagated correctly across distributed components to accurately track requests and dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Data Retention
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Data Lifecycle
&lt;/h4&gt;

&lt;p&gt;Determine the appropriate lifecycle for different types of telemetry data. Some data may need to be retained for a longer period for historical analysis, while other data may be discarded after a shorter duration.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Storage Costs
&lt;/h4&gt;

&lt;p&gt;Consider the storage costs associated with retaining telemetry data. Implement strategies to optimize storage usage, such as data compression or partitioning.&lt;/p&gt;

&lt;h4&gt;
  
  
  c. Legal and Compliance Requirements
&lt;/h4&gt;

&lt;p&gt;Ensure that data retention policies comply with relevant legal and regulatory requirements, such as data privacy regulations.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Visualization
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Clear and Concise
&lt;/h4&gt;

&lt;p&gt;Use visualization tools that can present telemetry and tracing data clearly and concisely. This includes charts, graphs, and dashboards that are easy to understand and interpret.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Anomaly Detection
&lt;/h4&gt;

&lt;p&gt;Look for tools that can automatically detect anomalies or outliers in the data. This can identify potential issues or trends that may require further investigation.&lt;/p&gt;

&lt;h4&gt;
  
  
  c. Customizable Dashboards
&lt;/h4&gt;

&lt;p&gt;Choose tools that allow you to create custom dashboards to visualize the specific metrics and data that are most relevant to your needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Alerting
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Critical Metrics
&lt;/h4&gt;

&lt;p&gt;Identify the critical metrics that you want to monitor and set up alerts for significant deviations from expected values.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Alert Thresholds
&lt;/h4&gt;

&lt;p&gt;Carefully define alert thresholds to avoid false positives or missed alerts.&lt;/p&gt;

&lt;h4&gt;
  
  
  c. Notification Channels
&lt;/h4&gt;

&lt;p&gt;Choose appropriate notification channels, such as email, SMS, or push notifications, to ensure that alerts are received promptly.&lt;/p&gt;

&lt;h4&gt;
  
  
  d. Alert Escalation
&lt;/h4&gt;

&lt;p&gt;Implement escalation procedures to ensure that critical issues are addressed promptly, even outside of normal working hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Security
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Data Encryption
&lt;/h4&gt;

&lt;p&gt;Encrypt sensitive telemetry data both in transit and at rest to protect it from unauthorized access.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Access Controls
&lt;/h4&gt;

&lt;p&gt;Implement strong access controls to restrict access to telemetry data to authorized personnel.&lt;/p&gt;

&lt;h4&gt;
  
  
  c. Regular audits
&lt;/h4&gt;

&lt;p&gt;Conduct regular security audits to identify and address vulnerabilities in your telemetry infrastructure.&lt;/p&gt;

&lt;h4&gt;
  
  
  d. Compliance and Regulations
&lt;/h4&gt;

&lt;p&gt;Ensure that your telemetry practices comply with relevant data privacy and security regulations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fllj2j1bkgwrrtpj3lfna.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fllj2j1bkgwrrtpj3lfna.jpg" alt="Practices" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Telemetry and tracing are essential tools for understanding and optimizing modern software systems. Organizations can gain valuable insights into system performance, reliability, and behavior by effectively collecting, analyzing, and visualizing telemetry data. By adopting best practices and leveraging popular tools, teams can ensure that their applications deliver the desired performance and reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>telemetry</category>
      <category>tracing</category>
      <category>systems</category>
    </item>
    <item>
      <title>A Comprehensive Guide to Multi-Tenancy Architecture</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Mon, 02 Sep 2024 09:10:13 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/a-comprehensive-guide-to-multi-tenancy-architecture-1nob</link>
      <guid>https://dev.to/pragyasapkota/a-comprehensive-guide-to-multi-tenancy-architecture-1nob</guid>
      <description>&lt;p&gt;As cloud computing and Software as a Service (SaaS) models rapidly dominate the software landscape, multi-tenancy architecture has become increasingly important. As the name suggests, muti-tenancy allows “tenants” or customers to share a single instance of a software application while keeping their data and configurations separate and secure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is multi-tenancy?
&lt;/h2&gt;

&lt;p&gt;Multi-tenancy is an architectural approach where a single instance of a software application simultaneously serves multiple tenants or customers. Each tenant can be an individual user, a group of users, or an entire organization. However, despite sharing the same underlying infrastructure and application code, each tenant’s data, preferences, and customizations remain isolated from others. Imagine it like a shared apartment building where multiple tenants reside in separate units, but they all share common infrastructure like the building itself, hallways, and elevators. This is a key feature that makes multi-tenancy both efficient and secure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should we use multi-tenancy?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Cost-Efficiency
&lt;/h3&gt;

&lt;p&gt;Since multi-tenancy maximizes the utilization of available infrastructure and reduces operational costs compared to running separate instances of an application for each tenant, the cost is reduced for both the provider and the customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Scalability
&lt;/h3&gt;

&lt;p&gt;It’s easier to scale an application with multi-tenancy architecture. It is designed in a way to accommodate increasing numbers of users and data. Since the resources are shared, adding new tenants typically requires fewer additional resources compared to a single-tenant environment.&lt;/p&gt;

&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%2Flivc0yra9guwk6jsf3he.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%2Flivc0yra9guwk6jsf3he.jpg" alt="Scalable" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Simplified Management
&lt;/h3&gt;

&lt;p&gt;It is easier to manage a single codebase serving multiple tenants, updates, and bug fixes. These can be applied once, benefiting all tenants simultaneously. This is so much simpler to maintain.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Resource Optimization
&lt;/h3&gt;

&lt;p&gt;Muti-tenancy optimizes the use of computing resources like CPU, memory, and storage, which are shared across multiple tenants. This leads to better resource utilization and reduced waste.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Faster Time-to-Market
&lt;/h3&gt;

&lt;p&gt;We can onboard more new tenants more quickly, accelerating time-to-market which can be beneficial.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does Multi-Tenancy Work?
&lt;/h2&gt;

&lt;p&gt;Multi-tenancy can be implemented in many ways, depending on the requirements of the application and the nature of the tenants. Let’s check out some of the common models.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Shared Database, Shared Schema
&lt;/h3&gt;

&lt;p&gt;This model allows the tenants to share the same database and schema. Data from different tenants is differentiated by a tenant identifier. While this model is the most resource-efficient, it also requires strict access controls to ensure data isolation. This makes this model an issue for some.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Shared Database, Separate Schemas
&lt;/h3&gt;

&lt;p&gt;Unlike the earlier model, here, tenants share the same database but each has a separate schema. The best part is — it provides a higher degree of isolation but it does so at the expense of increased complexity in managing multiple schemas.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Separate Databases
&lt;/h3&gt;

&lt;p&gt;In a separate database model, each tenant gets their dedicated database. This provides the highest level of data isolation and security but at a higher cost in terms of resources and maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Hybrid Models
&lt;/h3&gt;

&lt;p&gt;Some architectures use a hybrid approach, combining elements of the above models to balance cost, performance, and isolation based on the specific needs of the application and its tenants.&lt;/p&gt;

&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%2Fasi9qvjsy6ztkk7smc84.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%2Fasi9qvjsy6ztkk7smc84.jpg" alt="Multi Tenancy" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Multi-Tenancy
&lt;/h2&gt;

&lt;p&gt;There are multiple types of multi-tenancy architectures. Let’s discuss some:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Tenant Isolation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Physical Isolation
&lt;/h4&gt;

&lt;p&gt;Each tenant has its own dedicated hardware or virtual machine. This offers us the highest level of security but can be a little expensive.&lt;/p&gt;

&lt;h4&gt;
  
  
  Logical Isolation
&lt;/h4&gt;

&lt;p&gt;In this model, tenants share hardware or virtual machines, but their data is logically separated using techniques like database partitioning or virtualization. Since this approach balances its cost and security, they are very common these days.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Data Isolation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Full Isolation
&lt;/h4&gt;

&lt;p&gt;Each tenant’s data is completely isolated, ensuring no data leakage.&lt;/p&gt;

&lt;h4&gt;
  
  
  Partial Isolation
&lt;/h4&gt;

&lt;p&gt;Some data elements are shared across tenants, such as shared configuration settings or common data models.&lt;/p&gt;

&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%2Fjtcoudz7xzqt5d6kmllm.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%2Fjtcoudz7xzqt5d6kmllm.jpg" alt="Data Isolation" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Considerations for Multi-Tenancy
&lt;/h2&gt;

&lt;p&gt;While choosing the model for multi-tenancy architectures, we need to consider a few things:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Security
&lt;/h3&gt;

&lt;p&gt;We should look for good security measures to protect tenant data, including access controls, encryption, and regular audits.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Performance
&lt;/h3&gt;

&lt;p&gt;Next, optimizing the application to handle multiple tenants efficiently helps avoid performance bottlenecks.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Scalability
&lt;/h3&gt;

&lt;p&gt;Designing the architecture to accommodate growth and dangle increasing workloads can go a long way.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Tenant Management
&lt;/h3&gt;

&lt;p&gt;We also need to provide effective tools and processes for tenant onboarding, management, and offboarding.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Data Privacy and Compliance
&lt;/h3&gt;

&lt;p&gt;We must also ensure compliance with relevant data privacy regulations and industry standards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Implementing Multi-Tenancy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Strong Access Controls
&lt;/h3&gt;

&lt;p&gt;Implementing robust authentication and authorization mechanisms to make sure that tenants can only access their data and resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Data Encryption
&lt;/h3&gt;

&lt;p&gt;Encrypting data both at rest and in transit to protect sensitive information.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tenant-Aware Logging and Monitoring
&lt;/h3&gt;

&lt;p&gt;Maintaining separate logs for each tenant to make sure that the issues can be traced back to the correct tenant without exposing sensitive information from other tenants.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Scalability Planning
&lt;/h3&gt;

&lt;p&gt;Designing the system with scalability in mind, ensuring that it can handle a growing number of tenants without compromising performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Regular Security Audits
&lt;/h3&gt;

&lt;p&gt;Conducting regular security audits to identify and address potential vulnerabilities in the multi-tenant environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Use Cases of Multi-Tenancy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Software-as-a-Service (SaaS) Applications
&lt;/h3&gt;

&lt;p&gt;Many SaaS providers use multi-tenancy to deliver their applications to multiple customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Platform-as-a-Service (PaaS) Providers
&lt;/h3&gt;

&lt;p&gt;PaaS platforms often offer multi-tenancy to enable developers to deploy and manage their applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Infrastructure-as-a-Service (IaaS) Providers
&lt;/h3&gt;

&lt;p&gt;IaaS providers may use multi-tenancy to share physical or virtual resources across multiple customers.&lt;/p&gt;

&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%2Fh7f9pyh1kpzmvn75s6rx.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%2Fh7f9pyh1kpzmvn75s6rx.jpg" alt="Services" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges of Multi-Tenancy
&lt;/h2&gt;

&lt;p&gt;There are some challenges of multi-tenancy architecture:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Data Security and Privacy
&lt;/h3&gt;

&lt;p&gt;It is a critical challenge to ensure that each tenant’s data remains secure and private in a multi-tenant environment. Any breach could affect multiple tenants, making security measures and access controls essential.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Performance Isolation
&lt;/h3&gt;

&lt;p&gt;When in a shared environment, the performance of the application can be impacted by the activity of other tenants. It is important to integrate mechanisms to make sure that one tenant’s heavy usage doesn’t degrade the performance of others.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Customization
&lt;/h3&gt;

&lt;p&gt;We have a shared environment where every tenant has different needs in a multi-tenant architecture. However, we need enough flexibility for customization without compromising the shared nature of the architecture which can be challenging.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Complexity in Management
&lt;/h3&gt;

&lt;p&gt;Managing a multi-tenant environment is inherently more complex than managing a single-tenant environment. This includes everything from data segregation and security to tenant onboarding and monitoring.&lt;/p&gt;

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

&lt;p&gt;Multi-tenancy offers a compelling architecture that brings us significant advantages in terms of cost efficiency, scalability, and maintenance. As cloud computing and SaaS continue to dominate the industry, multi-tenancy can be efficient in looking for a broad customer base.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>multitenancy</category>
      <category>system</category>
      <category>designsystem</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Chaos Engineering: Embracing Uncertainty</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Sun, 18 Aug 2024 12:58:23 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/chaos-engineering-embracing-uncertainty-25jg</link>
      <guid>https://dev.to/pragyasapkota/chaos-engineering-embracing-uncertainty-25jg</guid>
      <description>&lt;p&gt;Web applications are getting more complex and interdependent by the day. This means we need to make sure that our web applications are resilient. But how do we do that?&lt;/p&gt;

&lt;p&gt;Chaos Engineering!&lt;/p&gt;

&lt;p&gt;One of the most innovative approaches in system design, Chaos Engineering will intentionally inject failures into systems to ultimately identify any underlying weaknesses. This makes the system resilient by fortifying systems against unexpected disruptions.&lt;/p&gt;

&lt;p&gt;Let’s learn the principles, practices, and benefits of chaos engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Chaos Engineering?
&lt;/h2&gt;

&lt;p&gt;Chaos Engineering is the discipline of experimenting on a system in production to build confidence in its capability to withstand turbulent and unexpected conditions. Netflix started it to ensure that their streaming service always does good, particularly during peak times.&lt;/p&gt;

&lt;p&gt;The fundamental idea of Chaos Engineering is to simulate random failures and observe how the system responds, thereby identifying and rectifying potential vulnerabilities before they cause significant issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Principles of Chaos Engineering Guide
&lt;/h2&gt;

&lt;p&gt;Several key principles guide Chaos Engineering. Let’s take a look at some of them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Hypothesis-Driven Experimentation
&lt;/h3&gt;

&lt;p&gt;While developing a system, we as developers must formulate hypotheses about how the system will behave under certain conditions. This step must be done before injecting chaos into the system. We can understand the expected versus actual outcomes of the experiment via this approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Gradual Introduction of Chaos
&lt;/h3&gt;

&lt;p&gt;Start small and gradually increase the level of disruption. This principle helps ensure that experiments’ impact is manageable and doesn’t cause widespread outages.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Automated Experiments
&lt;/h3&gt;

&lt;p&gt;Automate the chaos experiments to ensure consistency and repeatability. Automation allows for regular and frequent testing, which is crucial for maintaining system resilience.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Continuous Improvement
&lt;/h3&gt;

&lt;p&gt;Chaos Engineering is not a one-time activity. It requires continuous iteration and improvement based on the findings from each experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Chaos Engineering
&lt;/h2&gt;

&lt;p&gt;There are several steps we need to follow while implementing Chaos Engineering:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Identify Steady State Behavior
&lt;/h3&gt;

&lt;p&gt;First, we need to determine what normal operation looks like for our system. Without this, we cannot identify deviations caused by chaotic experiments. So, we need to define key metrics like response time, error rates, and throughput.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Formulate Hypotheses
&lt;/h3&gt;

&lt;p&gt;Based on the steady-state behavior, we hypothesize how the system will react to different failure scenarios. For example, “If we shut down one of the database nodes, the application should automatically reroute traffic to another node without affecting the system performance.”&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Design Experiments
&lt;/h3&gt;

&lt;p&gt;Next, we design chaos experiments to test this hypothesis. This might involve shutting down servers, introducing network &lt;a href="https://pragyasapkota.medium.com/latency-and-throughput-f2274f8b3f0a" rel="noopener noreferrer"&gt;latency&lt;/a&gt;, or simulating hardware failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Execute Experiments
&lt;/h3&gt;

&lt;p&gt;We now conduct the experiences in a controlled manner. Of course, we start with a staging environment before moving to production to minimize risk.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Analyze Results
&lt;/h3&gt;

&lt;p&gt;After the experiments, we compare the system’s behavior during the experiment to the hypothesized behavior to identify any discrepancies and potential vulnerabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Mitigate and Iterate
&lt;/h3&gt;

&lt;p&gt;After implementing fixes for the previously identified issues, we iterate the process. With each cycle of experimentation and improvement, the system has enhanced resilience.&lt;/p&gt;

&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%2F8bdldci8eqcuaga0w9vl.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%2F8bdldci8eqcuaga0w9vl.jpg" alt="Chaos Engineering" width="720" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools for Chaos Engineering
&lt;/h2&gt;

&lt;p&gt;There are tools for chaos engineering that can help us identify and improve our systems' weaknesses. It is beneficial to use them since they help us save time and be efficient. Let’s see some of them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Chaos Monkey
&lt;/h3&gt;

&lt;p&gt;Developed by Netflix, Chaos Monkey is an open-source chaos engineering tool that randomly terminates instances in production to ensure that services can handle failures gracefully. It was made to test the reliability and resiliency of Netflix; now we can use it on our system. One of the best parts here is that we can check for outages before deployment and write or edit code accordingly. It was also one of the first chaos engineering tools to initiate the method. We will not require any commercial license or cost to use Chaos Monkey as it is an open-source software.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Gremlin
&lt;/h3&gt;

&lt;p&gt;A comprehensive platform for Chaos Engineering, Gremlin allows for the simulation of various failure scenarios in the system. These scenarios include CPU spikes, memory leaks, and network outages. It was the first hosted chaos engineering platform designed to improve web-based reliability. The software is efficient in pinpointing various software weaknesses to minimize revenue loss and negative systematic impacts. However, its pricing ranges from per-agent pricing to attacks per target to support the frequency of testing required by a team.&lt;/p&gt;

&lt;p&gt;There are many other Chaos Engineering Tools like Chaos Toolkit, Simian Army, LitmusChaos, and Harness Chaos Engineering Powered by Litmus. But we can research them individually for our particular requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Chaos Engineering
&lt;/h2&gt;

&lt;p&gt;Several benefits of chaos engineering extend beyond just identifying and mitigating vulnerabilities. Let’s discuss some of them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Improved System Resilience
&lt;/h3&gt;

&lt;p&gt;With chaos engineering, we regularly test and address system weaknesses, making it more robust and capable of withstanding real-world failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Enhanced Team Confidence
&lt;/h3&gt;

&lt;p&gt;Knowing that the system has been tested against multiple failure scenarios helps build confidence among the engineering team and stakeholders.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Proactive Problem Solving
&lt;/h3&gt;

&lt;p&gt;Chaos Engineering shifts the focus from reactive firefighting to proactive problem-solving, reducing the impact of incidents.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Better Incident Response
&lt;/h3&gt;

&lt;p&gt;The constant injection of failures into the systems gives us a deeper understanding of the system’s behavior under failure conditions. As a result, our teams can respond more effectively to real incidents.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Cultural Transformation
&lt;/h3&gt;

&lt;p&gt;Chaos Engineering fosters a continuous learning and improvement culture, encouraging us to embrace failure as a path to growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Applications
&lt;/h2&gt;

&lt;p&gt;In today’s time, several popular organizations have successfully implemented chaos engineering to enhance their system resilience. Some of the examples are given below:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Netflix
&lt;/h3&gt;

&lt;p&gt;Netflix is the pioneer of Chaos Engineering. They use tools like Chaos Monkey and Simian Army to ensure their streaming service remains reliable, even during peak times.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Amazon
&lt;/h3&gt;

&lt;p&gt;Amazon has also used chaos experiments to test the resilience of its cloud infrastructure. This ensures that AWS services can handle disruptions seamlessly.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Google
&lt;/h3&gt;

&lt;p&gt;Google also uses chaos engineering to validate the robustness of its distributed systems, making sure that services like Gmail and YouTube remain available under various failure conditions.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Microsoft
&lt;/h3&gt;

&lt;p&gt;We can also see Microsoft integrating Chaos Engineering into their development lifecycle, particularly for Azure services, to identify and mitigate potential vulnerabilities.&lt;/p&gt;

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

&lt;p&gt;While chaos engineering offers us numerous benefits, it also brings some challenges and considerations:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Risk Management
&lt;/h3&gt;

&lt;p&gt;There are inherent risks of injecting failures into a production system. Hence, we must manage these risks by starting small, using staging environments, and gradually increasing the scope of experiments.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Cultural Resistance
&lt;/h3&gt;

&lt;p&gt;With Chaos Engineering, we may face some resistance from teams accustomed to traditional approaches. We would require strong leadership and a culture that can embrace experimentation and learning to deal with this kind of resistance.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tool and Automation
&lt;/h3&gt;

&lt;p&gt;Effective chaos engineering needs robust tooling and automation. Investing in the right tools and integrating them into the development pipeline is essential for success.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Monitoring and Observability
&lt;/h3&gt;

&lt;p&gt;Comprehensive monitoring and observability are crucial for detecting and analyzing the impact of chaos experiments. Make sure that the system has sufficient monitoring coverage before experimenting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future of Chaos Engineering
&lt;/h2&gt;

&lt;p&gt;Despite these challenges, the future of Chaos Engineering looks promising with several trends and advancements on the horizon.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Integration with CI/CD Pipelines
&lt;/h3&gt;

&lt;p&gt;Since organizations are slowly adopting DevOps practices, integrating Chaos Engineering into continuous integration and continuous delivery (CI/CD) pipelines will become more prevalent. Ultimately, this will enable automated and continuous testing of system resilience.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. AI and Machine Learning
&lt;/h3&gt;

&lt;p&gt;Integrating AI and machine learning can enhance Chaos Engineering by predicting failure points and optimizing experiment design based on historical data.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Broader Adoption
&lt;/h3&gt;

&lt;p&gt;As the benefits of Chaos Engineering become more widely recognized, its adoption will spread beyond tech giants to smaller organizations and various industries, including finance, healthcare, and telecommunications.&lt;/p&gt;

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

&lt;p&gt;Chaos Engineering is a paradigm shift in how we approach system resilience. By proactively identifying and addressing vulnerabilities through controlled chaos, organizations can build more robust systems capable of withstanding real-world disruptions. While it requires careful planning, robust tooling, and a cultural shift, the benefits of Chaos Engineering make it a valuable practice for any organization committed to delivering reliable and resilient software systems. So let’s together embrace the chaos and turn uncertainty into an opportunity for growth and improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>chaosengineering</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Everything we know about Chrome Dino Game: From Game Mechanics to the Hacks</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Tue, 30 Jul 2024 15:18:57 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/everything-we-know-about-chrome-dino-game-from-game-mechanics-to-the-hacks-1c17</link>
      <guid>https://dev.to/pragyasapkota/everything-we-know-about-chrome-dino-game-from-game-mechanics-to-the-hacks-1c17</guid>
      <description>&lt;p&gt;A small dino-shaped creature appears on our screen whenever our device is disconnected from the internet. The creature is a pixelated Tyrannosaurus Rex that runs forward to avoid objects like cacti and pterodactyls, a specific type of pterosaur from the group Pterosauria.&lt;/p&gt;

&lt;p&gt;The game works when we click space after the screen appears and the T. Rex starts running and it goes on until the creature hits one of the objects that runs towards it. We are limited to cacti as foreign objects till we cross the score of 500 after which we can also get pterodactyls flying towards us. The difficulty level gradually increases and after we cross 700, the standard mode changes to dark mode and changes back to standard after 1400. This happens every multiple of 700.&lt;/p&gt;

&lt;p&gt;We can pause the gameplay with Alt or F11 which also helps us switch to full-screen. Afterward, we can click the screen and resume the game.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of Dino Game
&lt;/h2&gt;

&lt;p&gt;The Chrome Dino game is a browser game developed by Google and integrated into the Google Chrome web browser. The dinosaur represents a joke that not having an internet connection is just like living in the prehistoric Jurassic age with no technology. The members of the Chrome UX team launched the game in September 2014 with designers Sebastien Gabriel, Alan Bettes, and Edward Jung. Originally, the game wasn’t supported on older devices which is why the team updated the code and re-released it in December 2014. Apart from these, pterodactyls were also only added with a browser update in 2015. The source code of the game is available on Chromium.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessing the game
&lt;/h2&gt;

&lt;p&gt;The game can be accessed in three ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Turn off the internet on your computer and then input a URL in the address bar. &lt;/li&gt;
&lt;/ul&gt;

&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%2F4p1vczlsf38vfcl1umzw.png" 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%2F4p1vczlsf38vfcl1umzw.png" alt="No Internet" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type &lt;code&gt;chrome://dino&lt;/code&gt; on the browser.&lt;/li&gt;
&lt;/ul&gt;

&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%2Fs40x1f3jrlut4k4bo8kj.png" 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%2Fs40x1f3jrlut4k4bo8kj.png" alt="chrome dino" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type &lt;code&gt;chrome://network-error/-106&lt;/code&gt; on the browser.&lt;/li&gt;
&lt;/ul&gt;

&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%2F2a2p4wgjakjsnk8r97xe.png" 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%2F2a2p4wgjakjsnk8r97xe.png" alt="network error" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scoring System
&lt;/h2&gt;

&lt;p&gt;The primary factor in determining our score in the Chrome dino game is how far the dinosaur runs. This means that the longer the dinosaur survives, the higher our score will be. As the game progresses, the dinosaur’s speed increases, resulting in a faster accumulation of points.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hacks to master the game
&lt;/h2&gt;

&lt;p&gt;After starting the game, the difficulty level is gradually increased. This means that the speed and frequency of the obstacles increase. But we needn’t worry!!&lt;/p&gt;

&lt;p&gt;Let’s discuss some hacks that we can use to master the game.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Step one is to open the game in any of the ways mentioned above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next, we need to open Chrome DevTools. We can open it by clicking right anywhere on the screen and selecting inspect from the menu that appears. Then, we need to select the tab “Console”.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&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%2Fsbghyu558xkvl3bj22dt.png" 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%2Fsbghyu558xkvl3bj22dt.png" alt="inspect" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, we can press &lt;code&gt;Ctrl+Shift+I&lt;/code&gt; and jump straight to the console tab without the hassle.&lt;/p&gt;

&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%2Fd0vmph5ve5ym3p4feqn3.png" 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%2Fd0vmph5ve5ym3p4feqn3.png" alt="console" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we are in this space, we have three options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To increase speed&lt;/li&gt;
&lt;li&gt;To increase the jump strength&lt;/li&gt;
&lt;li&gt;To be invincible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While we suggest you apply all, it’s important to know the working of all the commands. If we decide to opt for all three, we must first go for the option to be invincible because it might be a little harder to control when only the speed and jump strength are increased.&lt;/p&gt;

&lt;p&gt;The first line of code to enter in the console tab for invincibility is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let x = Runner.prototype.gameOver&lt;/code&gt;&lt;/p&gt;

&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%2Fen8irmk9c26owgzxa0m6.png" 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%2Fen8irmk9c26owgzxa0m6.png" alt="First Line" width="800" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second line must be:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Runner.prototype.gameOver = function (){}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After pressing enter in the second line, we will see &lt;code&gt;f(){}&lt;/code&gt; in the next.&lt;/p&gt;

&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%2Fcq68zjhgkzekx5tllfnr.png" 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%2Fcq68zjhgkzekx5tllfnr.png" alt="Second Line" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For speed,&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Runner.instance_.setSpeed(speed)&lt;/code&gt;&lt;/p&gt;

&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%2Fdc0s0csabshnqt7cgygm.png" 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%2Fdc0s0csabshnqt7cgygm.png" alt="speed" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For jump,&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Runner.instance_.tRex.setJumpVelocity(jumping_height)&lt;/code&gt;&lt;/p&gt;

&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%2Fm8mhn5wq4j3b1ppjuk52.png" 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%2Fm8mhn5wq4j3b1ppjuk52.png" alt="Jump" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stopping the Game After the Hack
&lt;/h2&gt;

&lt;p&gt;When we apply the invincibility hack, the game keeps on going and we are going to need to stop the game at some point. Here, we restore the original &lt;code&gt;gameOver&lt;/code&gt; function.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Runner.prototype.gameOver = x&lt;/code&gt;&lt;/p&gt;

&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%2F4rfrfdst30kgwukhib9d.png" 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%2F4rfrfdst30kgwukhib9d.png" alt="Stop" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does this code do?
&lt;/h2&gt;

&lt;p&gt;When the game is over coming into contact with a cactus or bird, &lt;code&gt;Runner.prototype.gameOver()&lt;/code&gt; is called and the action is triggered. In this case, we will hear a sound and the game stops and the game over message appears.&lt;/p&gt;

&lt;p&gt;But we will replace the gameOver function with an empty function with our code. This means that instead of hearing the sound, called the &lt;code&gt;gameOver&lt;/code&gt; function, and the appearance of the message, nothing happens upon collision, allowing us to can keep running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>chrome</category>
      <category>chromedino</category>
      <category>dinogame</category>
      <category>internet</category>
    </item>
    <item>
      <title>Beyond Money: The Impact of Enabling Widespread NFT Minting</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Sat, 08 Jun 2024 08:16:49 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/beyond-money-the-impact-of-enabling-widespread-nft-minting-4bhc</link>
      <guid>https://dev.to/pragyasapkota/beyond-money-the-impact-of-enabling-widespread-nft-minting-4bhc</guid>
      <description>&lt;p&gt;The concept of Blockchain and NFT is rapidly revolutionizing the whole web landscape. Non-fungible tokens (NFTs) are transforming the digital ownership aspect day by day and while most people grasp the idea of how these tokens work, some are still confused about the whole concept.&lt;/p&gt;

&lt;p&gt;In today’s blog, you will learn some fundamentals of NFT minting that can get you started on the concept. We will also get into the process of creating and issuing non-fungible tokens (NFTs) more accessible and user-friendly for creators and users, i.e., enabling widespread NFT minting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is NFT?
&lt;/h2&gt;

&lt;p&gt;Non-fungible tokens (NFTs) are the cryptographic assets representing ownership and proof of authenticity of any unique digital item or piece of content. Unlike fungible cryptocurrencies like Bitcoin and Ethereum, NFTs are unique and in no way the tokens are interchangeable and equal in value. Each NFT has distinct properties and cannot be replicated or replaced. Each of the tokens holds metadata that includes details about the item it represents like its creator, creation date, and a unique identifier.&lt;/p&gt;

&lt;p&gt;Over the past few years, NFTs have gained immense popularity and transcended the boundaries of traditional finance to permeate numerous economic sectors.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do NFTs work?
&lt;/h2&gt;

&lt;p&gt;Blockchain is a decentralized digital ledger that stores all the transactions in a chain of computers. NFTs are built across a network of computers that helps ensure the authenticity, ownership, and provenance of each token. We can mostly see NFTs on Ethereum where smart contracts are used to facilitate transactions. Smart contracts are self-executing contracts with the terms of the agreement written into the code itself. These contracts automate the minting process, ownership transfer, and transaction records on the blockchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is NFT Minting?
&lt;/h2&gt;

&lt;p&gt;NFT minting is a process of creating and issuing a new token. The process involves creating a unique digital asset and tokenizing it on a blockchain for transparency and authenticity of the item. In today’s date, most people prefer Ethereum for minting since it is widely accepted and also because it provides vigorous smart contracts. Other blockchain platforms like Tezos also support NFT minting.&lt;/p&gt;

&lt;p&gt;Metadata containing the information about the digital item is attached to the token when the NFT is being minted. There are some token standards on Ethereum ERC-721 and ERC-1155 based on which the NFT minting can be done. The standard ERC-721 represents a single digital asset that is unique and indivisible and ERC-1155 represents multiple copies of an item or a collection of multiple items.&lt;/p&gt;

&lt;p&gt;Minting an NFT also involves gas fees that can vary across network congestion and the complexity of the smart contract. These fees are only transaction fees used to compensate miners for validating and processing transactions on the network. While you are minting NFTs, you can have the option to embed royalty mechanisms into the smart contracts governing your NFTs so you can earn a percentage of the sale price each time the NFT is sold or transferred to a new owner in the secondary market. After completing the process, you can list your tokens for sale on various NFT marketplaces like OpenSea, Rarible, SuperRare, etc.&lt;/p&gt;

&lt;p&gt;Finally, you should be aware of legal and copyright implications during the process if the asset holds any copyrighted materials or if there are disputes over ownership rights.&lt;/p&gt;

&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%2Fmhezzmu4q7ub2843bt4n.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%2Fmhezzmu4q7ub2843bt4n.jpg" alt="NFT" width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-step guide to the minting process
&lt;/h2&gt;

&lt;p&gt;Here is a detailed guide to the minting process. We will deploy our smart contract on the Ethereum Sepolia Testnet. To get started, you need to install the MetaMask browser extension and some test ETH from QuickNode Multi-Chain Faucet. You need to connect the wallet and if you have 0.001ETH on the Mainnet, you can use the EVN faucets. Let’s see the steps one by one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the terminal and start an IPFS repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ipfs init&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open a separate terminal and start an IPFS daemon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ipfs daemon&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go back to the first terminal and add the image there with the .png file extension&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ipfs add image.png&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Copy the has that starts with Qm and add &lt;code&gt;https://ipfs.io/ipfs&lt;/code&gt;. It will look something like &lt;code&gt;https://ipfs.io/ipfs/QmPEVVUjuRi14T71sDttOzG4aodg&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a JSON file with the name &lt;code&gt;nft.json&lt;/code&gt; and save it in the same directory as the image in step 3&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
“name”: NFT Image”’
“description”: “This image shows the nature of NFT.”
“image”: “https://ipfs.io/ipfs/QmPEVVUJURI14T71sDttOzG4aodg”
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add the JSON file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ipfs add nft.json&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Take the hash with Qm and prefix it with &lt;code&gt;https://ipfs.io/ipfs&lt;/code&gt;. It will then look like &lt;code&gt;https://ipfs.io/ipfs/QmIFnTguOpT51Bpahepn7BYU&lt;/code&gt; This URL will now be used to mint our NFT.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will use OpenZeppelin ERC-721 contract for NFT creation and we do not need to write the whole interface but we can import the library contract and use its functions. Open Ethereum Remix IDE to create a Solidity file named &lt;code&gt;Token.sol&lt;/code&gt; and paste this code into the script:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//SPDX-License-Identifier: MIT
//pragma solidity ^0.8.20;

import “@openzeppelin/contracts@5.0.0/token/ERC721/ERC721.sol”;
import “@openzeppelin/contracts@5.0.0/token/ERC721/extensions/ERC721URIStorage.sol”;
import “@openzeppelin/contracts@5.0.0/token/ERC721/extensions/ERC712Burnable.sol”;
import “@openzeppelin/contracts@5.0.0/access/Ownable.sol”;

contract myToken is ERC721, ERC721URIStorage, ERC721Burnable, Ownable {
       constructor(address initialOwner)
              ERC721(“MyToken”, “MTK”)
              Ownable(initialOwner)
       {}
       function safeMint(address to, uint256 tokenID, string memory uri)
               public
               onlyOwner
       {
             _safeMint(to, tokenID);
             _setTokenURI(tokenID, uri);
}
// overrides required by Solidity

   function tokenURI(uint256 tokenID)
       public 
       view
       override(ERC721, ERC721URIStorage)
       returns (string memory)
   {
         Return super.tokenURI(tokenID);
    }
    function supportsInterface(bytes4 interfaceID)
        public
        view
        override(ERC721, ERC721URIStorage)
       returns (bool)
   {
          Return super.supportsInterface(intergaceID);
     }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now, use the OpenZeppelin ERC-721 contract and import the library contract to use its functions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get to Ethereum Remix IDE to create a new Solidity file with the new token name like — &lt;code&gt;NewToken.sol&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prepare your Solidity script&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import “@openzeppelin/contracts@5.0.0/token/ERC721/ERC721.sol”;
import “@openzeppelin/contracts@5.0.0/token/ERC721/extensions/ERC721URIStorage.sol”;
import “@openzeppelin/contracts@5.0.0/token/ERC721/extensions/ERC721Burnble.sol”;
import “@openzeppelin/contracts@5.0.0/access/ownable.sol”;

contract MyToken is ERC721, ERC721URIStorage, ERC721Burnable, Ownable {
        constructor(address initialOwner)
                ERC721(“NewToken”,”MTK”)
                Ownable(initialOwner)
       {}

Function safeMint(address to, uint256 tokenId, string memory uri)
        Public 
        onlyOwner
{
       _safeMint(to, tokenID);
       _setToeknURI(tokenID, uri);
}
// overrides required by Solidity

function tokenURI(uint256 tokenID)
      public 
      view
      override(ERC721, ERC721URIStorage)
      returns (string memory)

{
          Return super.tokenURI(tokenID);
}


function supportsInterface(bytes4 interfaceId)
         public
         view
         override(ERC721, ERC721URIStorage)
         returns (bool)
    {
         return super.supportsInterface(interfaceID);
     }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This code will now create a custom ERC721 token contract named NewToken so we as the contract owners can mint new tokens with metadata URIs and the support for the necessary interfaces defined by the ERC721 standard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You now need to customize the contract with your details for a more personalized experience. You can update the token name with the line&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ERC721(“NewToken”,”MTK”)&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After the completion, you can compile the smart contract and deploy it with the Injected Provider before pasting your wallet address into the box just near the Deploy button to define the &lt;code&gt;initialOwner&lt;/code&gt; inside the constructor function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need to click Deploy on Remix.IDE&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the appropriate contract under the contract tab to avoid an error message before deployment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm the transaction in the MetaMask wallet and then go to the Deployed Contracts section in the IDE and see the functions/methods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check the safeMint function and add your wallet address in the &lt;strong&gt;_to&lt;/strong&gt; field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under the safeMint function, enter a big number value in the &lt;strong&gt;_tokenId&lt;/strong&gt; field and it is usually better to use “1” as it represents the first token.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Input the URI of the previously prepared JSON file in the &lt;strong&gt;_uri&lt;/strong&gt; field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Transact and confirm the transaction from MetaMask.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have your NFT on the Sepolia chain. Check the metadata with tokenId.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Enabling Widespread NFT Minting
&lt;/h2&gt;

&lt;p&gt;There are many aspects of the concept where you can try to create tokens that are more accessible and user-friendly for the creators and users. Let’s see them one by one in different parts.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Enabling Widespread NFT Minting to simplify the process
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. User-friendly Interfaces
&lt;/h4&gt;

&lt;p&gt;With the creation of NFT minting platforms that are both intuitive and easy to navigate, even users with no prior blockchain experience can have no trouble using them. Some of the interface’s features include drag-and-drop interfaces, clear instructions, and pre-built templates.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Wallet Integration
&lt;/h4&gt;

&lt;p&gt;Integrating crypto wallets directly into the minting platform can eliminate the need for users to manage private keys or transfer funds between wallets.&lt;/p&gt;

&lt;h4&gt;
  
  
  c. Fiat on-ramps
&lt;/h4&gt;

&lt;p&gt;Next, allowing users to pay for minting fees with traditional currency or fiat using credit cards or debit cards can help you remove the barrier for those who are not comfortable using cryptocurrency.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Enabling Widespread NFT Minting to reduce costs
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Layer 2 solutions
&lt;/h4&gt;

&lt;p&gt;We can use Layer 2 scaling solutions on top of blockchains so the gas fees associated with minting NFTs can be reduced. With these layer 2 solutions, we can handle transactions off the main blockchain, making them faster and cheaper.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Alternative blockchains
&lt;/h4&gt;

&lt;p&gt;Moreover, we can explore all alternative blockchains that were designed for NFTs with lower transaction fees than Ethereum like Tezos and Solana.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Enabling Widespread NFT Minting to Encourage Creators
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Royalties
&lt;/h4&gt;

&lt;p&gt;You can also build royalty structures into the minting process so the creators can earn a percentage of every future sale of their NFT. Statistically, it has been shown that this incentivizes creators to participate in the NFT ecosystem.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Community Building
&lt;/h4&gt;

&lt;p&gt;Integrating features that creators can use to connect their audience and build communities around their NFTs can go beyond for the long term. This means we need to have forums, chat rooms, and exclusive content for NFT holders.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Enabling Widespread NFT Minting for Education and Awareness
&lt;/h3&gt;

&lt;h4&gt;
  
  
  a. Educational Resources
&lt;/h4&gt;

&lt;p&gt;Finally, we can hold clear and concise educational resources that will explain the definition and potential use cases of NFT alongside the minting process. You can upload regular blogs, tutorials, and video guides within the resources.&lt;/p&gt;

&lt;h4&gt;
  
  
  b. Highlighting Success Stories
&lt;/h4&gt;

&lt;p&gt;You can also showcase your successful NFT projects and creators can inspire others to participate and demonstrate the potential benefits of NFTs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Drawbacks of Enabling Widespread NFT Minting
&lt;/h2&gt;

&lt;p&gt;There are some potential drawbacks to the widespread adoption.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;
  
  
  Environment Impact
&lt;/h4&gt;

&lt;p&gt;The energy consumption of some blockchains used in NFTs can be significant and this raises concerns for the environmental impact. We can, however, look for solutions to address this concern.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;
  
  
  Market Volatility
&lt;/h4&gt;

&lt;p&gt;Since the NFT market is still relatively new and volatile, investors need to be aware of the risks involved. This way the decision will be informed and educated.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The bottom line is that widespread NFT minting brings immense potential to empower creators, open new avenues for ownership, and fuel innovation across various industries. As we move forward, prioritizing education, fostering collaboration, and developing responsible practices, can be the key to ensuring that widespread NFT minting fosters a thriving digital future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>nft</category>
      <category>ethereum</category>
      <category>bitcoin</category>
    </item>
    <item>
      <title>Canary Release: For Deployment Success</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Fri, 29 Sep 2023 09:06:53 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/canary-release-for-deployment-success-dnc</link>
      <guid>https://dev.to/pragyasapkota/canary-release-for-deployment-success-dnc</guid>
      <description>&lt;p&gt;For a software developer devoted to software development and continuous delivery, ensuring a smooth development process is important while minimizing the risk of failure. To achieve this balance, Canary Release has been the most popular technique over the last few years. This blog will discuss what Canary Release is, its benefits, and how it can be effectively implemented in your development pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Canary Release?
&lt;/h2&gt;

&lt;p&gt;Canary Release can be defined as a deployment strategy that you can use to introduce new features or updates to a small subset of your user base before rolling them out to the entire user population. The name canary was derived from the canaries in coal mines to detect toxic gases. In software development, canary release acts as an early warning system to help a developer identify potential issues or bugs in a controlled environment before they impact their entire user base.&lt;/p&gt;

&lt;p&gt;The whole idea of Canary Release was created to minimize risk and gain confidence in the changes gradually. With initial exposure of users to the new version of the software, it gets easier to monitor its performance, gather feedback, and address any underlying issues before expanding the release to a wider audience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of Canary Releases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Risk Mitigation
&lt;/h3&gt;

&lt;p&gt;Canary Releases help reduce the risk associated with deploying new code. In case of any critical issues, they can be addressed quickly without affecting the majority of users.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Early Feedback
&lt;/h3&gt;

&lt;p&gt;Developers can benefit from feedback from real users early in the deployment process. They can use it to identify usability issues, bugs, or performance problems that might have been missed during testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Improved Quality
&lt;/h3&gt;

&lt;p&gt;With gradual deployments and continuous monitoring, developers can make the software quality higher. Since the issues are caught and resolved sooner, the final product becomes more stable and reliable.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Confidence Building
&lt;/h3&gt;

&lt;p&gt;Canary Releases also build confidence in the release process and the changes being made. Teams can chill out with the new features and updates without disrupting the entire user base.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Rollback Capabilities
&lt;/h3&gt;

&lt;p&gt;Any major issue detected during the Canary Release helps roll back to the previous version to minimize downtime and user impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing a Canary Release
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Feature Toggles
&lt;/h3&gt;

&lt;p&gt;The feature toggles or feature flags help enable or disable specific features for a subset of users. Developers can get fine-grained control over what is exposed in the Canary Release.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Monitoring and Metrics
&lt;/h3&gt;

&lt;p&gt;Developers can implement comprehensive monitoring and metrics to track the Canary Release’s performance. This includes application performance, error rates, and user feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Gradual Rollout
&lt;/h3&gt;

&lt;p&gt;Starting with a small percentage of users like 1–5% and monitoring their experience closely can help gradually increase the percentage of users exposed to the new version as confidence grows.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Feedback Loops
&lt;/h3&gt;

&lt;p&gt;Establish feedback mechanisms for both users and development teams by encouraging users to report issues and provide feedback and ensuring that development teams are responsive to this input.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Automated Rollback
&lt;/h3&gt;

&lt;p&gt;Setting up automated rollback procedures can help quickly revert to the previous version in case of critical issues or anomalies.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Communication
&lt;/h3&gt;

&lt;p&gt;Communicate with your user base transparently so they can know about the Canary Release and the benefits it offers. Additionally, check if they can provide feedback or report problems.&lt;/p&gt;

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

&lt;p&gt;In today’s world of software development, Canary Releases can be a powerful tool, allowing teams to reduce deployment risk, gather valuable feedback, and improve software quality. With gradual deployments and continuous monitoring, developers can make sure that their software changes are not only delivered faster but also with higher confidence in their success. As the technology continues to evolve, Canary Releases might get even better as a crucial strategy for achieving these goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>systems</category>
      <category>systemdesign</category>
      <category>webdev</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Lambda Architecture: Revolutionizing Data Processing for Big Data</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Tue, 26 Sep 2023 10:51:56 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/lambda-architecture-revolutionizing-data-processing-for-big-data-253l</link>
      <guid>https://dev.to/pragyasapkota/lambda-architecture-revolutionizing-data-processing-for-big-data-253l</guid>
      <description>&lt;p&gt;We are living in a digital era where organizations deal with massive amounts of data generated from various sources. These data hold a huge potential for meaningful insights if processed correctly. It needs scalable and efficient data processing systems to harness this power and Lambda Architecture is one such approach with high prominence to handle large data volumes. It ensures fault tolerance and real-time processing capabilities that have benefited many organizations over the last few years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Lambda Architecture?
&lt;/h2&gt;

&lt;p&gt;Lambda Architecture is a data processing architecture that can handle large amounts of data in a fault-tolerant and scalable way. The architecture gets its name from the Greek letter lambda (λ), which signifies a function that transforms input data into output data.&lt;/p&gt;

&lt;p&gt;Traditional databases and processing systems often struggle with the sheer volume, velocity, and variety of data generated in today’s digital landscape. They were originally designed for batch processing which makes them ill-equipped to provide real-time or near-real-time insights.&lt;/p&gt;

&lt;p&gt;The concept of Lambda Architecture was first introduced in the book “Big Data: Principles and Best Practices of Scalable Realtime Data Systems” by Nathan Marz. It addressed the above challenges and provided a robust framework that can process large-scale data, making it suitable for applications ranging from social media analytics and e-commerce recommendation systems to fraud detection and IoT sensor data processing. It combines both batch processing and stream processing methods to make the data processing reliable and fast.&lt;/p&gt;

&lt;p&gt;There are three main layers in Lambda Architecture:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Batch Layer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Serving Layer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Speed Layer&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s discuss these layers briefly:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Batch Layer
&lt;/h3&gt;

&lt;p&gt;The first layer batch handles the process of storing and processing historical data in a batch-oriented fashion. With technologies like Hadoop MapReduce and Apache Stark, the batch layer performs large-scale batch processing jobs to generate batch views. Next, the batch views are precomputed and stored in a distributed file system or a NoSQL database.&lt;/p&gt;

&lt;p&gt;Batch Layer can handle massive amounts of historical data efficiently without disturbing data consistency and fault tolerance. However, it is not suitable for real-time data processing.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Serving Layer
&lt;/h3&gt;

&lt;p&gt;The serving layer is responsible for serving query results to users and applications in real-time. It uses the previously generated batch views from batch layers and uses databases like Apache HBase and Cassandra for quick data retrieval. The layer also provides low-latency access to query results.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Speed Layer
&lt;/h3&gt;

&lt;p&gt;Lastly, we have the speed layer to address the need for real-time processing and incoming data. With technologies like Apache Kafka or Apache Flink, it ingests and processes streamlining data in near-real-time. The result is usually combined with those from the serving layer to provide up-to-date query results.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Why choose Lambda Architecture?
&lt;/h2&gt;

&lt;p&gt;There are some reasons why you should choose lambda architecture for big data processing:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Scalability
&lt;/h3&gt;

&lt;p&gt;Lambda Architecture is highly scalable and lets organizations handle growing volumes of data with additional computational resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fault Tolerance
&lt;/h3&gt;

&lt;p&gt;The architecture also brings redundancy and fault tolerance mechanisms that maintain data integrity and system reliability even when there are hardware failures or other issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Real-Time Processing
&lt;/h3&gt;

&lt;p&gt;With the combination of batch and real-time processing, organizations can derive insights from historical and real-time data simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Flexibility
&lt;/h3&gt;

&lt;p&gt;Being a technology-agnostic architecture, it lets you choose the best-suited tools and technologies for specific use cases within each layer of the architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Consistency
&lt;/h3&gt;

&lt;p&gt;Batch views give a consistent and reliable source of truth for queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges in Lambda Architecture
&lt;/h2&gt;

&lt;p&gt;Though there are numerous benefits, lambda architecture also brings some challenges and considerations:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Complexity
&lt;/h3&gt;

&lt;p&gt;Lambda Architecture can be complex to implement since it requires expertise in multiple tools and technologies.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Maintenance Overhead
&lt;/h3&gt;

&lt;p&gt;With multiple layers, it might be hard to manage them and ensure synchronization. This can be resource-intensive which is a challenge for many.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Latency
&lt;/h3&gt;

&lt;p&gt;Though the speed layer provides near-real-time processing, you can still experience some latency while delivering results compared to fully stream-based systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Data Consistency
&lt;/h3&gt;

&lt;p&gt;It might be challenging to maintain data consistency between batch and real-time views.&lt;/p&gt;

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

&lt;p&gt;Lambda Architecture is one of the powerful approaches to big data processing with the ability to handle large volumes of data while offering real-time processing capabilities and fault tolerance. If the architecture is implemented correctly, it has the potential to empower organizations to unlock valuable insights from their data and make data-driven decisions. However, it needs some careful consideration according to the needs of your organization. This helps later when you implement and maintain the architecture before adopting it for big data processing tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>lambda</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Consensus Algorithms: Paxos and Raft</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Sat, 23 Sep 2023 13:25:28 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/consensus-algorithms-paxos-and-raft-37ab</link>
      <guid>https://dev.to/pragyasapkota/consensus-algorithms-paxos-and-raft-37ab</guid>
      <description>&lt;p&gt;Consensus Algorithms are the foundation of distributed computing systems. It enables multiple nodes to reach an agreement on a shared value or decision. A distributed system expects multiple nodes and processes to cooperate for a common goal, whether it is maintaining a distributed database, replicating data across servers, or electing a leader in a cluster. Hence, consensus helps achieve agreement among the nodes and ensures that they all converge on the same value or decision.&lt;/p&gt;

&lt;p&gt;There are two prominent consensus algorithms with widespread recognition in distributed systems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Paxos&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Raft&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s discuss the principles behind Paxos and Raft with their similarities, differences, and real-world applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paxos: The Pioneer of Consensus
&lt;/h2&gt;

&lt;p&gt;In 1989, Leslie Lamport proposed Paxos as one of the earliest consensus algorithms. It is highly resilient and fault-tolerant for reaching consensus in any distributed system. There are two protocols in Paxos, the Prepare and the Accept.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Prepare
&lt;/h3&gt;

&lt;p&gt;A node called a proposer broadcasts a proposal to other nodes called acceptors. The latter replies with promises not to accept any proposal with a lower number. So, if a proposal with a higher number is received, the proposal must restart the process again.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Accept
&lt;/h3&gt;

&lt;p&gt;When the proposer receives promises from a majority of acceptors, an acceptance request is sent. If the majority of acceptors accept the proposal, consensus is reached and the value is chosen.&lt;/p&gt;

&lt;p&gt;Paxos is robust and can easily handle network failures, node crashes, and message losses. However, it is challenging to understand and implement correctly, resulting in the development of the Raft consensus algorithm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Raft: The Understandable Consensus
&lt;/h2&gt;

&lt;p&gt;To overcome the challenges of Paxos, Diego Ongaro and John Ousterhout introduced Raft in 2013. It was designed with simplicity and understandability in mind so it could address some complexities of Paxos. In addition, it is more accessible to developers.&lt;/p&gt;

&lt;p&gt;The core principles of Raft are &lt;a href="https://dev.to/pragyasapkota/leader-election-2pk"&gt;leader election&lt;/a&gt;, log replication, and safety. The leader node is selected among the participants and it manages the log of commands and replicates it to other nodes. In case of a failure, a new leader is elected.&lt;/p&gt;

&lt;p&gt;Some of its key features are leader leases that reduce the risk of split votes and electric churn, and the separation of &lt;a href="https://dev.to/pragyasapkota/leader-election-2pk"&gt;leader election&lt;/a&gt; and log replication, which simplifies the algorithm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Applications of Distributed Systems
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Distributed Databases
&lt;/h3&gt;

&lt;p&gt;Consensus algorithms are important for distributed databases like Apache Cassandra and etcd, where data consistency is vital.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Distributed File Systems
&lt;/h3&gt;

&lt;p&gt;Hadoop’s HDFS and Google’s Cloud Spanner use consensus algorithms to manage distributed file storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Container Orchestration
&lt;/h3&gt;

&lt;p&gt;Kubernetes uses etcd with the Raft algorithm to manage cluster state.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Blockchain
&lt;/h3&gt;

&lt;p&gt;Blockchain networks like Bitcoin and Ethereum use consensus algorithms to ensure agreement on the state of the blockchain ledger.&lt;/p&gt;

&lt;p&gt;Consensus algorithms play a crucial role in distributed systems. There are multiple nodes to agree on shared values and decisions to bring reliability and fault tolerance. Paxos and Raft have their areas to shine on — while Paxos is known for its resilience, Raft brings forth simplicity and ease of understanding. These algorithms are really important for engineers and developers working on distributed systems and technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>webdev</category>
      <category>algorithms</category>
      <category>beginners</category>
    </item>
    <item>
      <title>API Gateway</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Tue, 19 Sep 2023 11:11:21 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/api-gateway-5a3l</link>
      <guid>https://dev.to/pragyasapkota/api-gateway-5a3l</guid>
      <description>&lt;p&gt;We have API management tools that help create a bridge between a client and the backend services. As the name gateway itself suggests, this is an entry point to get into the system so that the clients can have a well-tailored API. Apart from these, an API gateway is responsible for authentication, &lt;a href="https://pragyasapkota.medium.com/logging-monitoring-and-alerting-e0e3904350da"&gt;monitoring&lt;/a&gt;, &lt;a href="https://pragyasapkota.medium.com/load-balancing-why-do-we-need-them-70cfee96c391"&gt;load balancing&lt;/a&gt;, &lt;a href="https://pragyasapkota.medium.com/caching-d7fb5b7c115f"&gt;caching&lt;/a&gt;, throttling, &lt;a href="https://pragyasapkota.medium.com/logging-monitoring-and-alerting-e0e3904350da"&gt;logging&lt;/a&gt;, etc. With the APIs provided by different &lt;a href="https://pragyasapkota.medium.com/microservices-c1eaade08d77"&gt;microservices&lt;/a&gt;, the clients can easily interact with multiple kinds of services.&lt;/p&gt;

&lt;p&gt;The main purpose of an API gateway is to create an entry point that lets the clients in the system work with various features. Some common examples of API gateways are Amazon API Gateway, Apigee API Gateway, Azure Gateway, Kong API Gateway, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of API Gateway
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pragyasapkota.medium.com/service-discovery-8184d05bdc0e"&gt;Service Discovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pragyasapkota.medium.com/proxies-fb38a3f7a283"&gt;Reverse Proxy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pragyasapkota.medium.com/caching-d7fb5b7c115f"&gt;Caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pragyasapkota.medium.com/load-balancing-why-do-we-need-them-70cfee96c391"&gt;Load Balancing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pragyasapkota.medium.com/logging-monitoring-and-alerting-e0e3904350da"&gt;Logging&lt;/a&gt;, Tracing&lt;/li&gt;
&lt;li&gt;Retry and &lt;a href="https://pragyasapkota.medium.com/circuit-breaker-a-basic-concept-b0b49191f542"&gt;circuit-breaking&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pragyasapkota.medium.com/rate-limiting-ba1ea02f7d4e"&gt;Rate Limiting&lt;/a&gt; and Throttling&lt;/li&gt;
&lt;li&gt;Versioning&lt;/li&gt;
&lt;li&gt;Routing&lt;/li&gt;
&lt;li&gt;IP Whitelisting or blacklisting&lt;/li&gt;
&lt;li&gt;Authentication and Authorization&lt;/li&gt;
&lt;li&gt;API composition&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advantages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The client code is simplified.&lt;/li&gt;
&lt;li&gt;Some features like &lt;a href="https://pragyasapkota.medium.com/logging-monitoring-and-alerting-e0e3904350da"&gt;monitoring&lt;/a&gt;, analytics, tracing, etc.&lt;/li&gt;
&lt;li&gt;The internal structure of an API is encapsulated.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disadvantages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The configuration operations are challenging.&lt;/li&gt;
&lt;li&gt;Performance might be affected.&lt;/li&gt;
&lt;li&gt;A single point of failure can cause problems to find out.&lt;/li&gt;
&lt;li&gt;Scaling should be done properly to avoid bottlenecks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  BFF Pattern
&lt;/h2&gt;

&lt;p&gt;BFF stood for Backend for Frontend and was first introduced by Sam Newman. It can be defined as a pattern where we create separate backend services for a specific frontend interface. We can implement a BFF pattern if we wish to avoid customizing a single backend service for multiple interfaces.&lt;/p&gt;

&lt;p&gt;However, the output might sometimes differ from the format of the front end. We can have the front end loaded with some logic to reformat the data so that the BFF can be used to shift some logic to the intermediate layer.&lt;/p&gt;

&lt;p&gt;The pattern also gets the formats and sends the data after receiving it from the service. GraphQL is an excellent example of BFF performance.&lt;/p&gt;

&lt;p&gt;There are some conditions where it would be a great deal if the BFF pattern is used.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want to optimize the backend to meet the expectations of a specific client.&lt;/li&gt;
&lt;li&gt;If we need to customize general-purpose backends to accommodate multiple interfaces.&lt;/li&gt;
&lt;li&gt;If the general-purpose backend must be maintained with substantial development overhead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>apigateway</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>SSL, TLS, and mTLS</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Mon, 21 Aug 2023 09:46:13 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/ssl-tls-and-mtls-2af9</link>
      <guid>https://dev.to/pragyasapkota/ssl-tls-and-mtls-2af9</guid>
      <description>&lt;p&gt;System Design has many background concepts that might not sound so important but are always good to keep in mind. Similar concepts are some communication protocols like SSL, TLS, and mTLS.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSL (Secure Sockets Layer)
&lt;/h2&gt;

&lt;p&gt;SSL is a protocol that encrypts and secures communication happening over the internet. Though it was already developed in 1995, it has been deprecated in favor of Transport Layer Security (TLS). However, it is still called an SSL certificate because most of the significant certificate with SSL provides the certificate with the same name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is SSL essential?
&lt;/h3&gt;

&lt;p&gt;SSL was created so that not everyone can read the data transmitted during communication on the internet. It protects user privacy and doesn’t let anyone intercept the data.&lt;/p&gt;

&lt;p&gt;This happens when SSL encrypts the data and stops possible cyber attacks when it prevents attackers in the transit itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  TLS (Transport Layer Security)
&lt;/h2&gt;

&lt;p&gt;As mentioned earlier, TLS is a deprecated version of SSL. It works for privacy and data security for communications over the internet between web applications and servers.&lt;/p&gt;

&lt;p&gt;The components involved in TLS protocols are: -&lt;/p&gt;

&lt;h3&gt;
  
  
  Encryption
&lt;/h3&gt;

&lt;p&gt;It hides the data so it can’t be transferred from or to third parties without proper authentication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication
&lt;/h3&gt;

&lt;p&gt;It verifies whether the parties involved are who they claim to be.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrity
&lt;/h3&gt;

&lt;p&gt;It verifies if the data have been tampered with.&lt;/p&gt;

&lt;h2&gt;
  
  
  mTLS (Mutual TLS)
&lt;/h2&gt;

&lt;p&gt;Moving on, we have mTLS which means the parties at each end of the network connection need to be authenticated. It happens by checking that they all have the correct private keys. In addition, their individual TLS certificates add to the verification process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use mTLS?
&lt;/h3&gt;

&lt;p&gt;mTLS are commonly seen in &lt;a href="https://dev.to/pragyasapkota/microservices-21oe"&gt;microservice architectures&lt;/a&gt; and &lt;a href="https://dev.to/pragyasapkota/distributed-system-the-definition-nkh"&gt;distributed systems&lt;/a&gt; in a &lt;a href="https://en.wikipedia.org/wiki/Zero_trust_security_model"&gt;zero-trust security model&lt;/a&gt; to verify each other. The mTLS ensures the secured traffic on both servers and the client’s part. It has an additional layer of security for the users who log in to the network or applications. Moreover, it verifies the connection with the client who has devices that don’t follow the login process as the Internet of Things (IoT).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>ssl</category>
      <category>tls</category>
      <category>mtls</category>
    </item>
    <item>
      <title>Virtual Machines and Containers</title>
      <dc:creator>Pragya Sapkota</dc:creator>
      <pubDate>Sun, 13 Aug 2023 14:42:21 +0000</pubDate>
      <link>https://dev.to/pragyasapkota/virtual-machines-and-containers-nh0</link>
      <guid>https://dev.to/pragyasapkota/virtual-machines-and-containers-nh0</guid>
      <description>&lt;h2&gt;
  
  
  What is a Virtual Machine?
&lt;/h2&gt;

&lt;p&gt;Virtual machines (VMs) are virtual environments that work as a system with all the requirements like CPU, memory, network interface, and storage. They are created on a physical hardware system with software called a hypervisor. It divides the resources and hardware separately, so they are prepared to be used by the machines.&lt;/p&gt;

&lt;p&gt;On the system, the virtual machines are isolated from the rest and can be moved among the host servers according to the need. There can be multiple VMs in the same hardware — like a server.&lt;/p&gt;

&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi58j0d7gl8892wqhr6v7.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%2Fi58j0d7gl8892wqhr6v7.jpg" alt="Virtual machines"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hypervisors
&lt;/h3&gt;

&lt;p&gt;Hypervisors are also known as Virtual Machine Monitor (VMM) and isolate the OS, and the resources in the virtual machines. In addition, the hypervisors let on for creating and managing the VMs. All the resources in the devices such as CPU and memory act as a pool of resources so they can be relocated among the hosts or the new virtual machines (VMs).&lt;/p&gt;

&lt;h3&gt;
  
  
  Types of Hypervisors
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Process Virtual Machines
&lt;/h4&gt;

&lt;p&gt;Also called Bare Metal Hypervisors, process virtual machines operate on the host hardware directly by monitoring and managing the guest OS. We can usually see this hypervisor in business environments.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. System Virtual Machines
&lt;/h4&gt;

&lt;p&gt;Also called Hosted Hypervisors, system virtual machines run on physical host servers within the OS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do we need virtual machines?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Server consolidation&lt;/li&gt;
&lt;li&gt;Performance enhancement&lt;/li&gt;
&lt;li&gt;To try a new OS&lt;/li&gt;
&lt;li&gt;To clone a system to other machines&lt;/li&gt;
&lt;li&gt;To run old and incompatible software&lt;/li&gt;
&lt;li&gt;To develop software for various platforms&lt;/li&gt;
&lt;li&gt;To manage the potential malware safely&lt;/li&gt;
&lt;li&gt;To dismantle your system&lt;/li&gt;
&lt;li&gt;To use the VM Snapshots&lt;/li&gt;
&lt;li&gt;To test a new desktop&lt;/li&gt;
&lt;li&gt;To separate the environment of the resources from the rest of the system&lt;/li&gt;
&lt;li&gt;For easy transfer and migration on a network&lt;/li&gt;
&lt;li&gt;For cost-effectiveness&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages of using a virtual machine
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;More resources are required.&lt;/li&gt;
&lt;li&gt;High storage is required.&lt;/li&gt;
&lt;li&gt;Video game players may not find it significant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Containers
&lt;/h2&gt;

&lt;p&gt;Containers are the software units with the logical packaging mechanism of the codes and dependencies like the runtime versions and libraries. With the help of containers, the application runs quickly and reliably from one computing environment to another. The applications are abstracted from the environment where they run making the deployment easy and consistent regardless of the target environment.&lt;/p&gt;

&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fely9v08a5m563buzye6n.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%2Fely9v08a5m563buzye6n.jpg" alt="Containers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do we need containers?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Containers are flexible.&lt;/li&gt;
&lt;li&gt;The responsibilities are separated — developers can work on application logic and dependencies and operations teams can work on deployment and management.&lt;/li&gt;
&lt;li&gt;Containers can run virtually anywhere making it easy to develop and deploy — better workload portability.&lt;/li&gt;
&lt;li&gt;Applications are isolated since the resources are virtualized.&lt;/li&gt;
&lt;li&gt;Developers don’t need to worry about dependencies and environments.&lt;/li&gt;
&lt;li&gt;The lightweight features let the developers use the computing resources according to the requirement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages of containers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;They are not right for all kinds of tasks.&lt;/li&gt;
&lt;li&gt;Application isolation is weaker.&lt;/li&gt;
&lt;li&gt;There are limited tools in the containers.&lt;/li&gt;
&lt;li&gt;Containers have the potential for sprawl.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Virtualization Vs. Containerization
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Virtualization&lt;/th&gt;
&lt;th&gt;Containerization&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Virtual Machines are larger.&lt;/td&gt;
&lt;td&gt;Containers are smaller in size.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A single machine can have multiple OS - so they appear as multiple machines.&lt;/td&gt;
&lt;td&gt;The application is developed in the same OS under the environment - so the same machine works for multiple different environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The start-up time is higher than containers.&lt;/td&gt;
&lt;td&gt;The start-up time is comparatively less.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtual machines are slower than containers since they have many resources.&lt;/td&gt;
&lt;td&gt;Containers are faster.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The cost of implementation is very high.&lt;/td&gt;
&lt;td&gt;The cost of implementation is lower than the VMs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It works best for IT enterprise businesses.&lt;/td&gt;
&lt;td&gt;It works best for software developers and related businesses.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I hope this article was helpful to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please don’t forget to follow me!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Any kind of feedback or comment is welcome!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you for your time and support!!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Keep Reading!! Keep Learning!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>virtualmachine</category>
      <category>containers</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
