Hrvatski

Istražite Next.js Edge Config: moćno rješenje za globalnu distribuciju konfiguracije s brzinom i učinkovitošću. Naučite kako optimizirati svoju aplikaciju dinamičkom konfiguracijom na rubu mreže.

Next.js Edge Config: Jednostavna Globalna Distribucija Konfiguracije

U današnjem brzom okruženju web razvoja, ključno je pružiti personalizirana i dinamična iskustva korisnicima diljem svijeta. Next.js, popularni React framework, nudi robusno rješenje za izradu performantnih i skalabilnih web aplikacija. Jedna od njegovih ključnih značajki je Edge Config, moćan alat za upravljanje i distribuciju konfiguracije globalno na rubu mreže. Ovaj blog post pruža sveobuhvatan vodič za razumijevanje i korištenje Next.js Edge Configa kako biste optimizirali performanse svoje aplikacije i pružili prilagođena iskustva svojoj globalnoj publici.

Što je Next.js Edge Config?

Next.js Edge Config je globalno distribuirano spremište ključ-vrijednost niske latencije, posebno dizajnirano za posluživanje konfiguracijskih podataka Next.js Edge funkcijama. Za razliku od tradicionalnih baza podataka ili API-ja, Edge Config je optimiziran za brzinu i učinkovitost, omogućujući vam pristup konfiguracijskim podacima u milisekundama s bilo kojeg mjesta na svijetu. To vam omogućuje dinamičko prilagođavanje ponašanja vaše aplikacije na temelju konfiguracijskih vrijednosti, bez žrtvovanja performansi.

Zamislite ga kao globalno repliciranu JSON datoteku koju možete nevjerojatno brzo dohvaćati iz Edge funkcija. To ga čini idealnim za:

Zašto koristiti Edge Config?

Ovo su ključne prednosti korištenja Next.js Edge Configa:

Kako započeti s Edge Configom

Ovdje je vodič korak po korak za početak rada s Next.js Edge Configom:

1. Postavljanje projekta

Provjerite imate li Next.js projekt. Ako ne, stvorite ga pomoću:

npx create-next-app@latest my-app
cd my-app

2. Stvaranje Edge Configa

Trebat će vam Vercel račun za korištenje Edge Configa. Nakon što se prijavite, idite na svoj Vercel projekt i stvorite novi Edge Config. Dajte mu opisno ime.

3. Instalacija Edge Config SDK-a

Instalirajte @vercel/edge-config SDK u svoj Next.js projekt:

npm install @vercel/edge-config
# or
yarn add @vercel/edge-config
# or
pnpm install @vercel/edge-config

4. Konfiguriranje varijabli okruženja

Morat ćete konfigurirati varijablu okruženja EDGE_CONFIG. Vrijednost ove varijable možete pronaći u Vercel nadzornoj ploči za vaš Edge Config. Dodajte je u svoju .env.local datoteku (ili u postavke vašeg Vercel projekta za produkciju):

EDGE_CONFIG=your_edge_config_url

Važno: Nikada nemojte dodavati svoju .env.local datoteku u svoj repozitorij. Koristite Vercelove postavke varijabli okruženja za produkcijska okruženja.

5. Pristupanje konfiguracijskim vrijednostima u kodu

Sada možete pristupiti svojim Edge Config vrijednostima u svom Next.js kodu. Evo primjera:

// pages/index.js
import { get } from '@vercel/edge-config';

export async function getServerSideProps() {
  const featureFlag = await get('featureFlag');
  const welcomeMessage = await get('welcomeMessage');

  return {
    props: {
      featureFlag,
      welcomeMessage,
    },
  };
}

export default function Home({ featureFlag, welcomeMessage }) {
  return (
    <div>
      <h1>{welcomeMessage}</h1>
      {featureFlag ? <p>Značajka je omogućena!</p> : <p>Značajka je onemogućena.</p>}
    </div>
  );
}

U ovom primjeru, dohvaćamo vrijednosti featureFlag i welcomeMessage iz Edge Configa u getServerSideProps. Te se vrijednosti zatim prosljeđuju kao svojstva (props) Home komponenti.

6. Ažuriranje konfiguracijskih vrijednosti

Vrijednosti u svom Edge Configu možete ažurirati putem Vercel nadzorne ploče. Promjene se globalno propagiraju unutar milisekundi.

Napredni slučajevi upotrebe i primjeri

A/B testiranje s Edge Configom

Edge Config je savršen za A/B testiranje. Možete definirati konfiguracijsku vrijednost koja određuje koju verziju vaše aplikacije poslužiti korisniku. Na primjer:

  1. Stvorite Edge Config s ključem nazvanim abTestGroup.
  2. Postavite vrijednost na A ili B.
  3. U svojoj Edge funkciji, pročitajte vrijednost abTestGroup.
  4. Na temelju vrijednosti, poslužite ili verziju A ili verziju B vašeg sadržaja.

Evo primjera:

// pages/index.js
import { get } from '@vercel/edge-config';

export async function getServerSideProps() {
  const abTestGroup = await get('abTestGroup');

  let content;
  if (abTestGroup === 'A') {
    content = 'Ovo je verzija A!';
  } else {
    content = 'Ovo je verzija B!';
  }

  return {
    props: {
      content,
    },
  };
}

export default function Home({ content }) {
  return (
    <div>
      <h1>A/B Test</h1>
      <p>{content}</p>
    </div>
  );
}

Možete koristiti analitičke alate za praćenje uspješnosti svake verzije i utvrđivanje koja verzija ima bolje rezultate. Razmislite o alatima kao što su Google Analytics, Amplitude ili Mixpanel za sveobuhvatno prikupljanje i analizu podataka A/B testiranja.

Feature Flags (zastavice značajki) s Edge Configom

Feature flags omogućuju vam da omogućite ili onemogućite značajke bez implementacije novog koda. To je korisno za testiranje novih značajki u produkciji ili postupno uvođenje značajki podskupu korisnika. Slično A/B testiranju, možete kontrolirati dostupnost značajki jednostavnom booleovom zastavicom u vašem Edge Configu.

  1. Stvorite Edge Config s ključem nazvanim newFeatureEnabled.
  2. Postavite vrijednost na true ili false.
  3. U svojoj Edge funkciji, pročitajte vrijednost newFeatureEnabled.
  4. Na temelju vrijednosti, omogućite ili onemogućite novu značajku.
// components/MyComponent.js
import { get } from '@vercel/edge-config';

export async function MyComponent() {
  const newFeatureEnabled = await get('newFeatureEnabled');

  return (
    <div>
      {newFeatureEnabled ? <p>Nova značajka je omogućena!</p> : <p>Nova značajka je onemogućena.</p>}
    </div>
  );
}

export default MyComponent;

Personalizacija s Edge Configom

Možete koristiti Edge Config za personalizaciju sadržaja i iskustava na temelju korisničkih preferencija ili lokacije. Na primjer, možete pohraniti korisničke preferencije u bazu podataka, a zatim koristiti Edge Config za posluživanje različitog sadržaja na temelju tih preferencija.

Primjer scenarija: Globalna e-trgovina želi prikazati preporuke proizvoda na temelju zemlje korisnika. Mogli bi koristiti Edge Config za mapiranje zemalja na kategorije preporuka.

  1. Stvorite Edge Config s ključem nazvanim countryToCategoryMap.
  2. Postavite vrijednost na JSON objekt koji mapira zemlje na kategorije proizvoda (npr. {"US": "Elektronika", "GB": "Moda", "JP": "Kućanski proizvodi"}).
  3. U svojoj Edge funkciji, pročitajte vrijednost countryToCategoryMap.
  4. Odredite zemlju korisnika (npr. iz njegove IP adrese ili kolačića).
  5. Koristite countryToCategoryMap za određivanje odgovarajuće kategorije proizvoda.
  6. Prikažite preporuke proizvoda iz te kategorije.
// pages/products.js
import { get } from '@vercel/edge-config';

export async function getServerSideProps(context) {
  const countryToCategoryMap = await get('countryToCategoryMap');
  const country = context.req.headers['x-vercel-ip-country'] || 'US'; // Zadano na US
  const category = countryToCategoryMap[country] || 'General'; // Zadano na General

  // Dohvatite preporuke proizvoda na temelju kategorije
  const products = await fetchProducts(category);

  return {
    props: {
      products,
    },
  };
}

export default function Products({ products }) {
  return (
    <div>
      <h1>Preporuke proizvoda</h1>
      <ul>
        {products.map((product) => (
          <li key={product.id}>{product.name}</li>
        ))}
      </ul>
    </div>
  );
}

async function fetchProducts(category) {
  // Zamijenite s vašom stvarnom logikom za dohvaćanje proizvoda
  return [
    { id: 1, name: `Proizvod 1 (${category})` },
    { id: 2, name: `Proizvod 2 (${category})` },
  ];
}

Ovaj primjer koristi zaglavlje x-vercel-ip-country za određivanje zemlje korisnika. Ovo zaglavlje automatski dodaje Vercel. Važno je napomenuti da oslanjanje isključivo na geolokaciju temeljenu na IP-u možda nije uvijek točno. Razmislite o korištenju drugih metoda kao što su lokacija koju je korisnik unio ili sofisticiranije usluge geolokacije za poboljšanu točnost.

Geografsko usmjeravanje s Edge Configom

Možete usmjeriti korisnike na različite resurse ovisno o njihovoj lokaciji koristeći Edge Config. To je korisno za posluživanje lokaliziranog sadržaja ili usklađivanje s regionalnim propisima.

  1. Stvorite Edge Config s ključem nazvanim countryToRedirectMap.
  2. Postavite vrijednost na JSON objekt koji mapira zemlje na URL-ove (npr. {"CN": "/china", "DE": "/germany"}).
  3. U svojoj Edge funkciji, pročitajte vrijednost countryToRedirectMap.
  4. Odredite zemlju korisnika (npr. iz njegove IP adrese).
  5. Preusmjerite korisnika na odgovarajući URL.
// pages/_middleware.js
import { NextResponse } from 'next/server'
import { get } from '@vercel/edge-config';

export async function middleware(req) {
  const countryToRedirectMap = await get('countryToRedirectMap');
  const country = req.geo.country || 'US'; // Zadano na US
  const redirectUrl = countryToRedirectMap[country];

  if (redirectUrl) {
    return NextResponse.redirect(new URL(redirectUrl, req.url))
  }

  return NextResponse.next()
}

export const config = {
  matcher: '/',
}

Ovaj primjer koristi svojstvo req.geo.country, koje Vercelova Edge mreža automatski popunjava s kodom zemlje korisnika. Ovo je čišći i pouzdaniji pristup od izravnog parsiranja zaglavlja x-vercel-ip-country. Middleware funkcija provjerava postoji li URL za preusmjeravanje definiran za zemlju korisnika u Edge Configu. Ako postoji, preusmjerava korisnika na taj URL. U suprotnom, nastavlja s obradom zahtjeva.

Ograničavanje broja zahtjeva (Rate Limiting) s Edge Configom

Iako Edge Config nije dizajniran kao potpuno rješenje za ograničavanje broja zahtjeva, možete ga koristiti u kombinaciji s drugim tehnikama za implementaciju osnovnog ograničavanja. Ideja je pohraniti parametre za ograničavanje (npr. zahtjevi po minuti) u Edge Config, a zatim koristiti te parametre u svojim Edge funkcijama za provođenje ograničenja.

Važna napomena: Ovaj pristup je prikladan za jednostavne scenarije ograničavanja broja zahtjeva. Za robusnije ograničavanje, razmislite o korištenju namjenskih usluga ili middlewarea za ograničavanje broja zahtjeva.

  1. Stvorite Edge Config s ključevima kao što su requestsPerMinute i blockedIps.
  2. Postavite vrijednost requestsPerMinute na željeno ograničenje.
  3. Postavite vrijednost blockedIps na niz IP adresa koje treba blokirati.
  4. U svojoj Edge funkciji, pročitajte vrijednosti requestsPerMinute i blockedIps.
  5. Provjerite je li IP adresa korisnika u nizu blockedIps. Ako jest, blokirajte zahtjev.
  6. Koristite mehanizam za predmemoriranje (npr. Redis ili Vercelov Edge Cache) za praćenje broja zahtjeva s svake IP adrese unutar posljednje minute.
  7. Ako broj zahtjeva s IP adrese korisnika premaši ograničenje requestsPerMinute, blokirajte zahtjev.

Primjer (Ilustrativno - zahtijeva dodatnu implementaciju za predmemoriranje):

// pages/api/protected-route.js
import { get } from '@vercel/edge-config';

export default async function handler(req, res) {
  const requestsPerMinute = await get('requestsPerMinute');
  const blockedIps = await get('blockedIps');
  const ip = req.headers['x-real-ip'] || req.connection.remoteAddress; // Dohvati IP korisnika

  // Provjeri je li IP blokiran
  if (blockedIps && blockedIps.includes(ip)) {
    return res.status(429).send('Too Many Requests');
  }

  // TODO: Implementirati brojanje zahtjeva i predmemoriranje (npr. koristeći Redis ili Vercel Edge Cache)
  // Primjer (Konceptualno):
  // const requestCount = await getRequestCount(ip);
  // if (requestCount > requestsPerMinute) {
  //   return res.status(429).send('Too Many Requests');
  // }
  // await incrementRequestCount(ip);

  // Vaša logika zaštićene rute ovdje
  res.status(200).send('Zaštićenoj ruti uspješno pristupljeno!');
}

Važna razmatranja za ograničavanje broja zahtjeva:

Najbolje prakse za korištenje Edge Configa

Alternative Edge Configu

Iako je Edge Config moćan alat, nije uvijek najbolje rješenje za svaki slučaj upotrebe. Evo nekih alternativa koje treba razmotriti:

Zaključak

Next.js Edge Config je moćan alat za upravljanje i distribuciju konfiguracije globalno na rubu mreže. Korištenjem Edge Configa možete optimizirati performanse svoje aplikacije, pružiti personalizirana iskustva i pojednostaviti tijek rada upravljanja konfiguracijom. Bilo da gradite globalnu e-trgovinu, platformu za društvene medije ili bilo koju drugu vrstu web aplikacije, Edge Config vam može pomoći da pružite brzo i privlačno iskustvo svojim korisnicima diljem svijeta. Istražite mogućnosti i integrirajte Edge Config u svoje Next.js projekte danas kako biste otključali njegov potencijal!