ã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãä¿å®æ§ãã»ãã¥ãªãã£ãåäžãããããã«ãåå®å šãªç°å¢å€æ°ãå®è£ ããæ¹æ³ãåŠã³ãŸããããã°ããŒãã«ãœãããŠã§ã¢éçºã«ãããèšå®ç®¡çã®ãã¹ããã©ã¯ãã£ã¹ãæ¢æ±ããŸãã
åå®å šãªç°å¢å€æ°ïŒèšå®ã®åå®å šæ§
ãœãããŠã§ã¢éçºãçµ¶ããé²åããäžã§ãã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãä¿å®æ§ããããŠã»ãã¥ãªãã£ã確ä¿ããããšã¯æéèŠäºé ã§ãããã°ãã°èŠéããããã¡ãªéèŠãªåŽé¢ã®1ã€ããèšå®ãç¹ã«ç°å¢å€æ°ã®æ±ãæ¹ã§ãããã®å æ¬çãªã¬ã€ãã§ã¯ãåå®å šãªç°å¢å€æ°ã®éèŠæ§ãæãäžãããã¹ããã©ã¯ãã£ã¹ãæ¢æ±ããäžçäžã®éçºè ãåã¥ããããã®å®è·µçãªäŸãæäŸããŸãã
ç°å¢å€æ°ã®éèŠæ§
ç°å¢å€æ°ã¯ããœãããŠã§ã¢ã¢ããªã±ãŒã·ã§ã³ã®åäœã«åœ±é¿ãäžããåçãªå€ã§ããã³ãŒãã倿Žããããšãªãã¢ããªã±ãŒã·ã§ã³ãèšå®ããããã®éèŠãªã¡ã«ããºã ãæäŸããŸãã倿°ã®å€ã倿Žããã ãã§ãããŸããŸãªç°å¢ïŒéçºããã¹ããæ¬çªïŒãç°¡åã«åãæ¿ããããšãã§ããŸããããã¯ãããŸããŸãªå°åããŠãŒã¶ãŒãã€ã³ãã©ã¹ãã©ã¯ãã£èšå®ã«ã¢ããªã±ãŒã·ã§ã³ãé©å¿ãããå¿ èŠãããã°ããŒãã«ãœãããŠã§ã¢éçºã«ãããŠç¹ã«éèŠã§ãã
äžçäžã§äºæ¥ãå±éããŠããeã³ããŒã¹ãã©ãããã©ãŒã ãèããŠã¿ãŸããããé貚èšå·ãAPIãšã³ããã€ã³ãURLãããŒã¿ããŒã¹æ¥ç¶æååã¯ãã¹ãŠãç°å¢å€æ°ã«æé©ãªåè£ã§ããã³ãŒãããèšå®ãåé¢ããããšã§ãããŸããŸãªå°ççãã±ãŒã·ã§ã³ã§ã®ã·ãŒã ã¬ã¹ãªãããã€ãæŽæ°ãããã³ã¹ã±ãŒãªã³ã°ã容æã«ããŸãã
åä»ããããŠããªãç°å¢å€æ°ã®åé¡ç¹
åå®å šæ§ããªããã°ãç°å¢å€æ°ã¯å€ãã®å ŽåãæååãšããŠæ±ãããŸãããã®ã¢ãããŒãã«ã¯ãããã€ãã®èª²é¡ããããŸãã
- ã©ã³ã¿ã€ã ãšã©ãŒïŒ å€ã¯å€ãã®å Žåãã³ãŒãå ã§è§£æãããŸãïŒããšãã°ãæååãæ°å€ãŸãã¯ããŒã«å€ã«å€æãããªã©ïŒã誀ã£ãè§£æã¯ãäºæããªãã©ã³ã¿ã€ã ãšã©ãŒãã¢ããªã±ãŒã·ã§ã³ã¯ã©ãã·ã¥ã«ã€ãªããå¯èœæ§ããããŸããæååãtrueããæŽæ°ãšããŠèª€ã£ãŠè§£æããäžæµã®ããžãã¯é害ã«ã€ãªããã·ã¹ãã ãæ³åããŠã¿ãŠãã ããã
- ã³ãŒãã®è€éãïŒ ç¹°ãè¿ãè§£æãšæ€èšŒããžãã¯ãã³ãŒãããŒã¹ãç ©éã«ããèªã¿ããããçè§£ãããããä¿å®ãã«ããããŸããããã¯ãå€§èŠæš¡ã§åæ£ããããŒã ãã°ããŒãã«ãããžã§ã¯ãã«åãçµãã§ããå Žåã«æªåããŸãã
- ã»ãã¥ãªãã£ã®è匱æ§ïŒ æ©å¯æ§ã®é«ãç°å¢å€æ°ïŒããšãã°ãAPIããŒãããŒã¿ããŒã¹èªèšŒæ å ±ïŒã誀ã£ãŠåŠçãããšãã¢ããªã±ãŒã·ã§ã³ãã»ãã¥ãªãã£ãªã¹ã¯ã«ãããããå¯èœæ§ããããŸããæååã§åä»ããããå€ã¯ãæœåšçãªã»ãã¥ãªãã£è åšã«å¯ŸããŠãµãã¿ã€ãºããã³æ€èšŒããã®ãé£ããããšããããããŸãã
- ãããã°ã®å°é£ãïŒ ç°å¢å€æ°ã®èª€èšå®ãåå ã§ã¢ããªã±ãŒã·ã§ã³ã倱æããå Žåãæ ¹æ¬åå ã远跡ããã®ã«æéãããããã€ã©ã€ã©ããããšããããŸãã
åå®å šæ§ã®å°å ¥ïŒèšå®ã®ä¿è·
åå®å šæ§ã«ãããç°å¢å€æ°ã¯äœ¿çšåã«å®çŸ©æžã¿ã®åã«å¯ŸããŠæ€èšŒãããŸãããã®ç©æ¥µçãªã¢ãããŒãã¯ãã©ã³ã¿ã€ã ãšã©ãŒã®ãªã¹ã¯ãå€§å¹ ã«æžãããã¢ããªã±ãŒã·ã§ã³å šäœã®å ç¢æ§ãé«ããŸããããã¯ãã°ããŒãã«åžå Žã«ãµãŒãã¹ãæäŸããè€éã§åæ£åã®ã¢ããªã±ãŒã·ã§ã³ã§ç¹ã«åœ¹ç«ã¡ãŸãã
åå®å šãªç°å¢å€æ°ã®å©ç¹ã«ã¯ã以äžãå«ãŸããŸãã
- æ©æã®ãšã©ãŒæ€åºïŒ åã®æ€èšŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åæãŸãã¯èšå®ã®èªã¿èŸŒã¿æã«è¡ããããšã©ãŒãå³åº§ã«èå¥ãããŸãã
- ã³ãŒãã®å¯èªæ§ã®åäžïŒ åã¢ãããŒã·ã§ã³ã¯ãæåŸ ãããå€ãæç¢ºã«å®çŸ©ããã³ãŒããçè§£ãããããä¿å®ããããããŸãã
- ã»ãã¥ãªãã£ã®åŒ·åïŒ æåŸ ãããåãå®çŸ©ããããšã«ãããéçºè ã¯é©åãªæ€èšŒããã³ãµãã¿ã€ãºæè¡ãé©çšããã»ãã¥ãªãã£ãªã¹ã¯ã軜æžã§ããŸãã
- ãããã°ã®ç°¡çŽ åïŒ åãšã©ãŒã¯ã誀èšå®ãããç°å¢å€æ°ã«é¢ããæç¢ºãã€ç°¡æœãªæ å ±ãæäŸãããããã°ãå éããŸãã
- ä¿å®æ§ã®åäžïŒ èšå®ãé©åã«åä»ããããææžåãããŠããå Žåãã¢ããªã±ãŒã·ã§ã³ã®ãªãã¡ã¯ã¿ãªã³ã°ãšæŽæ°ã容æã«ãªããŸãã
åå®å šãªç°å¢å€æ°ã®å®è£ ïŒå®è·µçãªäŸ
ç°å¢å€æ°ã§åå®å šæ§ãå®çŸããããã«ãããã€ãã®ææ³ãšããŒã«ã䜿çšã§ããŸããã¢ãããŒãã®éžæã¯ãããã°ã©ãã³ã°èšèªããã¬ãŒã ã¯ãŒã¯ãããã³ã¢ããªã±ãŒã·ã§ã³ã®è€éãã«ãã£ãŠç°ãªããŸããã°ããŒãã«ãªé©çšæ§ãæã€ããã€ãã®äžè¬çãªæ¹æ³ãæ¢ã£ãŠã¿ãŸãããã
1. å°çšã®ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã®äœ¿çš
å€ãã®ããã°ã©ãã³ã°èšèªã«ã¯ãåå®å šæ§ã®ããç°å¢å€æ°ãåŠçããããã«ç¹å¥ã«èšèšãããã©ã€ãã©ãªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ããããŸããããã€ãã®äŸã次ã«ç€ºããŸãã
- Node.jsïŒ `dotenv-safe`ã©ã€ãã©ãªã¯ãç°å¢å€æ°ãããŒãããã³æ€èšŒããããã®å ç¢ãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã`.env`ãã¡ã€ã«ã䜿çšããŠå€æ°ãä¿åããã¹ããŒããã¡ã€ã«ïŒããšãã°ãJSONã¹ããŒããŸãã¯TypeScriptåå®çŸ©ïŒã¯ãæåŸ ãããåãšæ€èšŒã«ãŒã«ãå®çŸ©ããŸããããã¯ãã°ããŒãã«ãªNode.jsããŒã¹ã®ãããžã§ã¯ãã«ç¹ã«åœ¹ç«ã¡ãŸãã
- PythonïŒ `python-dotenv`ã©ã€ãã©ãªã䜿çšãããšã`.env`ãã¡ã€ã«ããç°å¢å€æ°ãããŒãã§ããŸãããããšã`pydantic`ã®ãããªã©ã€ãã©ãªãçµã¿åãããŠãç°å¢å€æ°ã®ã¢ãã«ãå®çŸ©ããåå®å šæ§ãšæ€èšŒãé©çšã§ããŸãããã®ãã¿ãŒã³ã¯ãPythonã䜿çšããã°ããŒãã«ãªç§åŠããã³ããŒã¿ãšã³ãžãã¢ãªã³ã°ãããžã§ã¯ãã§éåžžã«ããŸãæ©èœããŸãã
- GoïŒ `go-env`ã®ãããªã©ã€ãã©ãªã¯ãç°å¢å€æ°ãããŒãããåãã§ãã¯ãšæ€èšŒã䜿çšããŠGoæ§é äœã«ãããã³ã°ããæ¹æ³ãæäŸããŸãããã®ã¢ãããŒãã¯ãããŸããŸãªç°å¢åãã®å¹ççã§ã¯ãã¹ãã©ãããã©ãŒã ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããéã«äººæ°ããããŸãã
- JavaïŒ Javaã®ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã¯ãå€ãã®å ŽåãSpring Bootã®ãããªãã¬ãŒã ã¯ãŒã¯ãšçµ±åãããŠãããå³å¯ãªåä»ãã§ããããã£ãã¡ã€ã«ãšç°å¢å€æ°ã䜿çšã§ããŸããSpring Boot `Environment`æœè±¡åã«ãããç°å¢å€æ°ãžã®ç°¡åãªã¢ã¯ã»ã¹ãå¯èœã«ãªããå倿æ©èœãæäŸãããŸããããã«ãããããŸããŸãªãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã§ã®ä¿å®æ§ãåäžããŸãã
- .NETïŒC#ïŒïŒ .NETãã¬ãŒã ã¯ãŒã¯ãšãã®é¢é£ã©ã€ãã©ãªã¯ãç°å¢å€æ°ãåŠçããå³å¯ã«åä»ããããæ§æã¯ã©ã¹ãäœæããããã®å ç¢ãªæ¹æ³ãæäŸããŸããæ§æãçµã¿èŸŒãŸããŠãããéçºããã¹ããæ¬çªã·ã¹ãã å šäœã§ç°¡åã«ã¢ã¯ã»ã¹ã§ããŸãã
äŸïŒ`dotenv-safe`ãšTypeScriptã䜿çšããNode.jsïŒïŒ
ãŸããå¿ èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã
npm install dotenv-safe typescript @types/dotenv-safe --save-dev
ãããžã§ã¯ãã®ã«ãŒãã«`.env`ãã¡ã€ã«ãäœæããŸãã
PORT=3000
DATABASE_URL=postgres://user:password@host:port/database
DEBUG=true
TypeScriptã䜿çšããŠã¹ããŒããå®çŸ©ããŸãã
// .env.example.ts
import { cleanEnv, port, str, bool } from 'envalid';
export const env = cleanEnv(process.env, {
PORT: port({ default: 3000 }),
DATABASE_URL: str({ desc: 'Database connection string' }),
DEBUG: bool({ default: false }),
});
ã¢ããªã±ãŒã·ã§ã³ã³ãŒãå ïŒ
// index.ts
import * as dotenvSafe from 'dotenv-safe';
import { env } from './.env.example';
dotenvSafe.config();
console.log(`Server listening on port ${env.PORT}`);
console.log(`Database URL: ${env.DATABASE_URL}`);
console.log(`Debug mode: ${env.DEBUG}`);
ãã®äŸã§ã¯ã`envalid`ã®`cleanEnv`颿°ããå®çŸ©ãããåã«å¯ŸããŠç°å¢å€æ°ãæ€èšŒããŸããæ€èšŒã«å€±æããå Žåãã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«ãšã©ãŒãã¹ããŒãããç¡å¹ãªæ§æã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããªãããã«ããŸããããã¯ãåå®å šãªæ§æãå®éã«åäœããŠããããšãæç¢ºã«ç€ºããŠããŸãã
2. æåæ€èšŒãšå倿
å Žåã«ãã£ãŠã¯ãå°çšã©ã€ãã©ãªã䜿çšã§ããªãå ŽåããããŸãããã®ãããªç¶æ³ã§ã¯ãç°å¢å€æ°ãæåã§æ€èšŒããç®çã®åã«å€æã§ããŸãããã®ã¢ãããŒãã§ã¯ãããæäœæ¥ãå¿ èŠã§ãã
äŸïŒPythonïŒïŒ
import os
def get_port() -> int:
port_str = os.getenv('PORT')
if port_str is None:
return 8080 # Default value
try:
return int(port_str)
except ValueError:
raise ValueError('PORT must be an integer')
PORT = get_port()
ãã®äŸã§ã¯ã`get_port`颿°ã`PORT`ç°å¢å€æ°ãååŸãããããæå¹ãªæŽæ°ã§ããããšãæ€èšŒããæŽæ°å€ãè¿ããŸãã倿°ãååšããªãå ŽåããŸãã¯æå¹ãªæŽæ°ã§ãªãå Žåã¯ãããã©ã«ãå€ã䜿çšãããããäŸå€ãçºçããŸããããã«ãããã©ã³ã¿ã€ã ãšã©ãŒãé²ãããããã°ã容æã«ãªããŸãã
3. ã³ãŒããšããŠã®æ§æïŒã€ã³ãã©ã¹ãã©ã¯ãã£ãšããŠã®ã³ãŒãïŒã®æŽ»çš
TerraformãAnsibleãKubernetesãªã©ã®ã³ãŒããšããŠã®æ§æïŒIaCïŒããŒã«ã¯ãç°å¢å€æ°ãå®çŸ©ããã³ç®¡çããã¡ã«ããºã ããã°ãã°æäŸããŸãããããã®ããŒã«ã¯ãæ§æå€ã®åãã§ãã¯ãšæ€èšŒããµããŒãããŠããŸãã
äŸïŒTerraformïŒïŒ
variable "database_url" {
type = string
description = "The connection string for the database."
sensitive = true # Mark as sensitive
}
resource "aws_db_instance" "default" {
db_name = "mydb"
engine = "mysql"
allocated_storage = 10
username = "user"
password = var.database_url # Avoid storing directly as sensitive
}
ãã®Terraformã®äŸã§ã¯ã`database_url`倿°ã`string`åã§å®çŸ©ãããŠããŸããTerraformã¯ãèšç»æ®µéã§å€æ°ã®å€ãæ€èšŒãããããæå¹ãªæååã§ããããšã確èªããŸãããã®ã¢ãããŒãã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ãã°ããŒãã«ã«äžè²«ããæ§æã§ãããã€ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
åå®å šãªç°å¢å€æ°ã®ãã¹ããã©ã¯ãã£ã¹
åå®å šãªç°å¢å€æ°ã广çã«å®è£ ããã«ã¯ãç¹å®ã®ãã¹ããã©ã¯ãã£ã¹ãéµå®ããå¿ èŠããããŸãã
- æç¢ºãªåãå®çŸ©ããïŒ åç°å¢å€æ°ïŒäŸïŒæååãæŽæ°ãããŒã«å€ãURLïŒã®æåŸ ãããåãæç€ºçã«å®çŸ©ããŸãã
- æ€èšŒã䜿çšããïŒ ç°å¢å€æ°ãæåŸ ããã圢åŒãšå¶çŽã«æºæ ããŠããããšã確èªããããã«ãå ç¢ãªæ€èšŒãå®è£ ããŸããç¹ã«ã°ããŒãã«ãªæ§æã®å Žåãæ£èŠè¡šçŸãç¯å²ãã§ãã¯ãããã³ãã®ä»ã®æ€èšŒææ³ã®äœ¿çšãæ€èšããŠãã ããã
- ããã©ã«ãå€ãæäŸããïŒ å€æ°ãèšå®ãããŠããªãå Žåã«äºæããªãåäœãé²ãããã«ãç°å¢å€æ°ã®ããã©ã«ãå€ãå®çŸ©ããŸããããã«ããããã¹ãŠã®å Žæã§äžè²«ããæäœãä¿é²ãããŸãã
- æ§æãææžåããïŒ ãã¹ãŠã®ç°å¢å€æ°ã®ç®çãåãæ€èšŒã«ãŒã«ãããã³ããã©ã«ãå€ãææžåããŸãããã®ããã¥ã¡ã³ãã¯ãéçºããŒã ã®ãã¹ãŠã®ã¡ã³ããŒãšããã¹ãŠã®å°ççå°åã®é¢ä¿è ãã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸããOpenAPIãSwaggerãªã©ã®ããŒã«ãå æ¬çãªããã¥ã¡ã³ãã«æŽ»çšã§ããŸãã
- æ©å¯æ å ±ãå®å šã«åŠçããïŒ ã³ãŒããŸãã¯ããŒãžã§ã³ç®¡çã§æ©å¯æ å ±ïŒäŸïŒAPIããŒããã¹ã¯ãŒãïŒãããŒãã³ãŒãããªãã§ãã ãããç°å¢å€æ°ãŸãã¯ã»ãã¥ã¢ãªã·ãŒã¯ã¬ãã管çã·ã¹ãã ïŒäŸïŒHashiCorp VaultãAWS Secrets ManagerãAzure Key VaultãGoogle Cloud Secret ManagerïŒã䜿çšããŸããæå·åã®äœ¿çšããã°ãã°å¿ èŠã§ãã
- `.env.example`ãŸãã¯åæ§ã®ãã¡ã€ã«ã䜿çšããïŒ å¿ é ããã³ãªãã·ã§ã³ã®ç°å¢å€æ°ãå«ããµã³ãã«ãã¡ã€ã«ãæäŸããŸããããã¯ããã¥ã¡ã³ãããã³ãã³ãã¬ãŒããšããŠæ©èœããŸãããããã®ãã¡ã€ã«ã«ã·ãŒã¯ã¬ãããä¿åããªãããã«ããŠãã ããã
- æ§æããã¹ãããïŒ ã¢ããªã±ãŒã·ã§ã³ãç°å¢å€æ°ãæ£ããããŒãããŠè§£éããããšã確èªããããã«ãåäœãã¹ããäœæããŸããäžè¶³ããŠãã倿°ãç¡å¹ãªå€ãæå¹ãªå€ãªã©ãããŸããŸãªã·ããªãªããã¹ãããŸããããã«ããããããã€äžã®ãšã©ãŒã®å¯èœæ§ãæå°éã«æããŸãã
- CI/CDã䜿çšããïŒ ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çãããã€ã¡ã³ãïŒCI/CDïŒãã€ãã©ã€ã³ã«ç°å¢å€æ°æ€èšŒãçµ±åããŠãéçºã©ã€ããµã€ã¯ã«ã®æ©ã段éã§æ§æãšã©ãŒããã£ããããŸããCI/CDã·ã¹ãã ã¯ããã¹ãŠã®ã°ããŒãã«ãããžã§ã¯ãã§ã®ãããã€ã®å®å®æ§ãåäžãããŸãã
- ã·ãŒã¯ã¬ãã管çããŒã«ã掻çšããïŒ æ©å¯æ å ±ã«ã€ããŠã¯ãç°å¢å€æ°ã«çŽæ¥ã·ãŒã¯ã¬ãããä¿åããã®ã§ã¯ãªããå°çšã®ã·ãŒã¯ã¬ãã管çã·ã¹ãã ã䜿çšããããšããå§ãããŸããã·ãŒã¯ã¬ãã管çã·ã¹ãã ã¯ã°ããŒãã«ã«é©çšå¯èœã§ãã
- æ§æãããã¡ã€ã«ãæ€èšããïŒ è€éãªãããžã§ã¯ãã§ã¯ãããŸããŸãªç°å¢ïŒéçºãã¹ããŒãžã³ã°ãæ¬çªïŒã®ããŸããŸãªèšå®ã管çããããã«æ§æãããã¡ã€ã«ã䜿çšããŸããããã«ãããããŸããŸãªã°ããŒãã«ãã±ãŒã·ã§ã³ã§ã®åçåããããããã€ã容æã«ãªããŸãã
ã°ããŒãã«ãªèæ ®äºé ãšäŸ
ã°ããŒãã«ãªã³ã³ããã¹ãã§ç°å¢å€æ°ãæäœããå Žåã¯ã次ã®ç¹ãèæ ®ããŠãã ããã
- ããŒã«ãªãŒãŒã·ã§ã³ïŒ ç°å¢å€æ°ã¯ãé貚èšå·ãæ¥ä»åœ¢åŒãèšèªèšå®ãªã©ãããŒã«ã©ã€ãºãããèšå®ãåŠçããå¿ èŠãããå ŽåããããŸããããšãã°ã`LANGUAGE`ç°å¢å€æ°ã䜿çšããŠãå Žæã«åºã¥ããŠãŠãŒã¶ãŒã®åªå èšèªã決å®ã§ããŸãã
- ã¿ã€ã ãŸãŒã³ïŒ æ¥ä»ãšæå»ã®å€ãåŠçãããšãã¯ãã¿ã€ã ãŸãŒã³ã®éããèæ ®ããŠãã ãããç°å¢å€æ°ã䜿çšããŠããã©ã«ãã®ã¿ã€ã ãŸãŒã³ãèšå®ããããŸããŸãªåœéãããã€å šäœã§ããŒã¿ã®æŽåæ§ã確ä¿ããŸãã
- éè²šïŒ ã°ããŒãã«eã³ããŒã¹ãã©ãããã©ãŒã ã«å¯Ÿå¿ããããã«ãç°å¢å€æ°ã䜿çšããŠãããŸããŸãªå°åã®é貚èšå·ãŸãã¯çºæ¿ã¬ãŒããä¿åããŸãã
- APIãšã³ããã€ã³ãïŒ ãµãŒãã¹ã®APIãšã³ããã€ã³ãã¯ãå°ççå°åã«ãã£ãŠç°ãªãå ŽåããããŸããç°å¢å€æ°ã䜿çšããŠãããŸããŸãªåžå Žã®API URLãèšå®ããŸãã
- ã»ãã¥ãªãã£ïŒ APIããŒãããŒã¿ããŒã¹èªèšŒæ å ±ãªã©ãæ©å¯æ§ã®é«ãç°å¢å€æ°ãä¿è·ããããã«ãå ç¢ãªã»ãã¥ãªãã£å¯Ÿçãå®è£ ããŸããæå·åãšã·ãŒã¯ã¬ãã管çããŒã«ã䜿çšããŠããããã®èªèšŒæ å ±ãä¿è·ããŸããããã¯ãããããåœéçãªãããã€ã¡ã³ãã§äžå¯æ¬ ã§ãã
äŸïŒãã«ããªãŒãžã§ã³APIèšå®
eã³ããŒã¹äŒç€Ÿã§ãããGlobalMartãã¯ãåç±³ããšãŒããããã¢ãžã¢å€ªå¹³æŽãªã©ãããã€ãã®å°åã§äºæ¥ãå±éããŠããŸãã圌ãã¯ãç°å¢å€æ°ã䜿çšããŠãæ¯æãã²ãŒããŠã§ã€ã®APIãšã³ããã€ã³ãã管çããŠããŸãã
圌ãã®`.env`ãã¡ã€ã«ã«ã¯ã次ã®ããã«èšè¿°ãããŠããå¯èœæ§ããããŸãã
PAYMENT_API_NA=https://api.globalmart.com/na/payments
PAYMENT_API_EU=https://api.globalmart.com/eu/payments
PAYMENT_API_APAC=https://api.globalmart.com/apac/payments
REGION=NA # or EU or APAC, dynamically determines API
圌ãã®ã³ãŒãã§ã¯ã`REGION`ç°å¢å€æ°ã䜿çšããŠãé©åãªAPIãšã³ããã€ã³ããéžæããŸãã
const region = process.env.REGION || 'NA'; // Default to North America
let paymentApiUrl = process.env.PAYMENT_API_NA;
switch (region) {
case 'EU':
paymentApiUrl = process.env.PAYMENT_API_EU;
break;
case 'APAC':
paymentApiUrl = process.env.PAYMENT_API_APAC;
break;
}
// Make API call using paymentApiUrl
console.log(`Using payment API: ${paymentApiUrl}`);
ãã®ã¢ãããŒãã«ãããGlobalMartã¯ãã³ãŒãã倿Žããããšãªããã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªå°åã«ç°¡åã«ãããã€ã§ããŸãã`REGION`ç°å¢å€æ°ã¯ãååžå Žã®æ£ããAPIãšã³ããã€ã³ããåçã«éžæããŸãã
çµè«ïŒæ§æã®ãšã¯ã»ã¬ã³ã¹ã«ã¯åå®å šæ§ã
åå®å šãªç°å¢å€æ°ã¯ãç¹ã«ã°ããŒãã«ãªã¹ã±ãŒã«ã§éçšããå Žåãå ç¢ã§ä¿å®å¯èœã§å®å šãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®äžå¯æ¬ ãªåŽé¢ã§ããåå®å šæ§ãæ¡çšããããšã§ãã©ã³ã¿ã€ã ãšã©ãŒãäºåã«é²ããã³ãŒãã®å¯èªæ§ãé«ããæ§æç®¡çãåçåã§ããŸãããã®ã¬ã€ãã§æŠèª¬ãããŠããææ³ãšãã¹ããã©ã¯ãã£ã¹ãæ¡çšããŠãã°ããŒãã«ãªèŠèŽè ã®èª²é¡ã«å¯Ÿå¿ã§ãããå埩åããããé©å¿æ§ãé«ããããã«äœ¿çšã§ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠãã ããããããã®ãã©ã¯ãã£ã¹ã䜿çšãããšãããä¿¡é Œæ§ãé«ããä¿å®æ§ãé«ããå®å šãªã¢ããªã±ãŒã·ã§ã³ã«ã€ãªãããŸãã
åå®å šæ§ãåªå ããããšã§ãéçºè ããã³éçºããŒã ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å質ãšå埩åãå€§å¹ ã«åäžãããããšãã§ããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªç°å¢ãšæ§æãšã·ãŒã ã¬ã¹ã«çµ±åããå¿ èŠãããã°ããŒãã«ãœãããŠã§ã¢éçºã«ãšã£ãŠç¹ã«éèŠã§ãã
åå®å šãªç°å¢å€æ°ã®æ¡çšã¯ãæ§æã®ãšã¯ã»ã¬ã³ã¹ãéæããã¯ãŒã«ãã¯ã©ã¹ã®ãœãããŠã§ã¢ãæ§ç¯ããããã®éèŠãªã¹ãããã§ãã