KR_IT_DevOps - somaz94/DevOps-Engineer GitHub Wiki

IT μš©μ–΄: DevOps 핡심 κ°œλ…

7. SSO (Single Sign-On)μ΄λž€?

SSO, 즉 Single Sign-On은 μ‚¬μš©μžκ°€ ν•˜λ‚˜μ˜ 인증을 톡해 μ—¬λŸ¬ μ‹œμŠ€ν…œμ΄λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ‘κ·Όν•  수 있게 ν•΄μ£ΌλŠ” 인증 과정이닀. μ‚¬μš©μžλŠ” ν•˜λ‚˜μ˜ ID와 λΉ„λ°€λ²ˆν˜Έλ‘œ λ‹€μ–‘ν•œ μ„œλΉ„μŠ€μ— λ‘œκ·ΈμΈν•  수 있으며, μ΄λŠ” μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚€κ³  인증 κ΄€λ¦¬μ˜ λ³΅μž‘μ„±μ„ 쀄여쀀닀. SSOλŠ” 효율적인 μžμ› 관리와 λ³΄μ•ˆ 강화에도 κΈ°μ—¬ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 직원이 νšŒμ‚¬μ˜ 이메일, λ¬Έμ„œ 도ꡬ, λ‚΄λΆ€ 포털 λ“± λ‹€μ–‘ν•œ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  λ•Œ 각각 λ‹€λ₯Έ 둜그인 정보λ₯Ό κΈ°μ–΅ν•  ν•„μš” 없이 ν•œ 번의 둜그인으둜 λͺ¨λ“  μ„œλΉ„μŠ€μ— μ ‘κ·Όν•  수 μžˆλ‹€.

SSO κ΅¬ν˜„μ€ μ—¬λŸ¬ λ°©μ‹μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ 수 있으며, 일반적으둜 OAuth, SAML(Security Assertion Markup Language), OpenID Connect와 같은 ν‘œμ€€ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•œλ‹€. μ΄λŸ¬ν•œ ν”„λ‘œν† μ½œμ€ μ•ˆμ „ν•œ 인증 μ •λ³΄μ˜ κ΅ν™˜μ„ 보μž₯ν•˜λ©°, μ„œλΉ„μŠ€ μ œκ³΅μžμ™€ μ‹ λ’°ν•  수 μžˆλŠ” 인증 제곡자 κ°„μ˜ 톡신을 μ€‘μž¬ν•œλ‹€.

SSO μ£Όμš”μ΄μ 

  • μ‚¬μš©μž νŽΈμ˜μ„± μ¦λŒ€: ν•œ 번의 둜그인으둜 μ—¬λŸ¬ μ„œλΉ„μŠ€μ— μ ‘κ·Όν•  수 μžˆμ–΄ μ‚¬μš©μžμ˜ νŽΈμ˜μ„±μ΄ μ¦λŒ€λœλ‹€.
  • λ³΄μ•ˆ κ°•ν™”: μ‚¬μš©μžκ°€ λ‹€μ–‘ν•œ μ„œλΉ„μŠ€μ— λŒ€ν•΄ λ³΅μž‘ν•˜κ³  λ‹€λ₯Έ λΉ„λ°€λ²ˆν˜Έλ₯Ό κΈ°μ–΅ν•  ν•„μš”κ°€ μ—†μ–΄, κ°•λ ₯ν•œ λΉ„λ°€λ²ˆν˜Έ 정책을 더 μ‰½κ²Œ μ‹œν–‰ν•  수 μžˆλ‹€.
  • 효율적인 μžμ› 관리: 인증 μ ˆμ°¨κ°€ μ€‘μ•™μ—μ„œ κ΄€λ¦¬λ˜λ―€λ‘œ IT κ΄€λ¦¬μžλŠ” μ‚¬μš©μž 계정을 λ”μš± 효과적으둜 관리할 수 μžˆλ‹€.

OAuth (Open Authorization)

  • λͺ©μ : OAuthλŠ” μ•‘μ„ΈμŠ€ μœ„μž„μ„ μœ„ν•œ κ°œλ°©ν˜• ν‘œμ€€μœΌλ‘œ, 일반적으둜 인터넷 μ‚¬μš©μžκ°€ λΉ„λ°€λ²ˆν˜Έλ₯Ό μ œκ³΅ν•˜μ§€ μ•Šκ³ λ„ μ›Ήμ‚¬μ΄νŠΈλ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ‹€λ₯Έ μ›Ήμ‚¬μ΄νŠΈμ˜ 정보에 λŒ€ν•œ μ•‘μ„ΈμŠ€ κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” λ°©λ²•μœΌλ‘œ μ‚¬μš©λœλ‹€. μ‚¬μš©μž 자격 증λͺ…을 λ…ΈμΆœν•˜μ§€ μ•Šκ³  μ‚¬μš©μž 데이터에 μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ 타사 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μΈμ¦ν•˜λŠ” 데 쀑점을 λ‘”λ‹€.
  • μž‘λ™ 방식: OAuthλŠ” λ¦¬μ†ŒμŠ€ μ†Œμœ μž(μ‚¬μš©μž)의 μŠΉμΈμ„ λ°›μ•„ 승인 μ„œλ²„μ—μ„œ 타사 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 토큰을 λ°œκΈ‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ μž‘λ™ν•œλ‹€. 이 토큰은 μ •μ˜λœ κΈ°κ°„ λ™μ•ˆ νŠΉμ • λ¦¬μ†ŒμŠ€ μ„ΈνŠΈμ— λŒ€ν•œ μ•‘μ„ΈμŠ€ κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€. μ΅œμ‹  버전인 OAuth 2.0은 API 인증에 μ‚¬μš©λ˜λ©° λ‹€μ–‘ν•œ ν΄λΌμ΄μ–ΈνŠΈ μœ ν˜• 및 μ‹œλ‚˜λ¦¬μ˜€μ— λŒ€ν•œ μ—¬λŸ¬ 흐름(λ˜λŠ” λΆ€μ—¬)을 μ§€μ›ν•œλ‹€. OAuth Authentication Process

SAML (Security Assertion Markup Language)

  • λͺ©μ : SAML은 μ„œλΉ„μŠ€ μ œκ³΅μžμ™€ ID 제곡자 κ°„μ˜ 인증 및 κΆŒν•œ λΆ€μ—¬λ₯Ό μœ„ν•œ XML 기반 ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. SSO(Single Sign-On)λ₯Ό μœ„ν•΄ μ—”ν„°ν”„λΌμ΄μ¦ˆ ν™˜κ²½μ—μ„œ 널리 μ‚¬μš©λ˜λ©° μ‚¬μš©μžκ°€ ν•œ 번 λ‘œκ·ΈμΈν•˜λ©΄ 재인증 없이 μ—¬λŸ¬ μ‹œμŠ€ν…œμ— μ•‘μ„ΈμŠ€ν•  수 μžˆλ‹€.
  • μž‘λ™ 방식: SAMLμ—μ„œ ID κ³΅κΈ‰μž(IdP)λŠ” μ‚¬μš©μžμ˜ 자격 증λͺ…을 ν™•μΈν•œ λ‹€μŒ μ„œλΉ„μŠ€ κ³΅κΈ‰μž(SP)μ—κ²Œ SAML μ–΄μ„€μ…˜μ„ 보낸닀. 이 μ–΄μ„€μ…˜μ—λŠ” μ‚¬μš©μž ID와 κ΄€λ ¨λœ 인증 λ¬Έ 및 속성이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ μ„œλΉ„μŠ€ κ³΅κΈ‰μžλŠ” 이 μ–΄μ„€μ…˜μ„ 기반으둜 μ•‘μ„ΈμŠ€ κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€. SAML 2.0은 ν˜„μž¬ 일반적으둜 μ‚¬μš©λ˜λŠ” 버전이닀. SAML Authentication Process

OIDC (OpenID Connect)

  • λͺ©μ : OpenID ConnectλŠ” OAuth 2.0 ν”„λ‘œν† μ½œ μœ„μ— μžˆλŠ” κ°„λ‹¨ν•œ ID κ³„μΈ΅μœΌλ‘œ, ν΄λΌμ΄μ–ΈνŠΈκ°€ μ΅œμ’… μ‚¬μš©μžμ˜ IDλ₯Ό ν™•μΈν•˜κ³  μƒν˜Έ 운용 κ°€λŠ₯ν•œ REST와 μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ κΈ°λ³Έ ν”„λ‘œν•„ 정보λ₯Ό 얻을 수 μžˆλ„λ‘ ν•œλ‹€. μ›Ή, λͺ¨λ°”일 및 JavaScript ν΄λΌμ΄μ–ΈνŠΈμ— 널리 μ‚¬μš©λœλ‹€.
  • μž‘λ™ 방식: OpenID ConnectλŠ” μ‚¬μš©μžμ— λŒ€ν•œ 정보가 ν¬ν•¨λœ JWT(JSON μ›Ή 토큰)인 ID ν† ν°μœΌλ‘œ OAuth 2.0을 ν™•μž₯ν•œλ‹€. μ‚¬μš©μžλ₯Ό μΈμ¦ν•œ ν›„ ID κ³΅κΈ‰μžλŠ” ID 토큰과 μ•‘μ„ΈμŠ€ 토큰(승인된 경우)을 λ°œκΈ‰ν•œλ‹€. 그런 λ‹€μŒ ν΄λΌμ΄μ–ΈνŠΈλŠ” ID 토큰을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž 정보λ₯Ό μ–»κ³  μ•‘μ„ΈμŠ€ 토큰을 μ‚¬μš©ν•˜μ—¬ 승인된 λ¦¬μ†ŒμŠ€μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλ‹€. OIDC Authentication Process

OAuth vs SAML vs OIDC

  • OAuthλŠ” 주둜 인증이 μ•„λ‹Œ 승인과 관련이 μžˆλ‹€. μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•˜μ—¬ μž‘μ—…ν•  수 μžˆλŠ” κΆŒν•œμ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λΆ€μ—¬ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.
  • SAML은 μ‚¬μš©μžκ°€ μ„Έμ…˜ 쀑에 μ—¬λŸ¬ μ„œλΉ„μŠ€μ— μ•‘μ„ΈμŠ€ν•˜λŠ” μ—”ν„°ν”„λΌμ΄μ¦ˆ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 주둜 SSOλ₯Ό ν†΅ν•œ 인증 및 κΆŒν•œ 뢀여에 쀑점을 λ‘”λ‹€.
  • OIDCλŠ” 인증을 μΆ”κ°€ν•˜κΈ° μœ„ν•΄ OAuth 2.0을 기반으둜 κ΅¬μΆ•λ˜μ–΄ 신원 확인과 데이터 μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ λͺ¨λ‘ ν•„μš”ν•œ μ΅œμ‹  μ›Ή 및 λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μœ„ν•œ 보닀 포괄적인 μ†”λ£¨μ…˜μ΄λ‹€.

8. JWT 토큰(JWT Token)μ΄λž€?

JSON μ›Ή 토큰(JWT) 은 두 λ‹Ήμ‚¬μž 간에 전솑될 ν΄λ ˆμž„μ„ λ‚˜νƒ€λ‚΄λŠ” URL μ•ˆμ „ λ°©μ‹μ˜ κ°„κ²°ν•œ μˆ˜λ‹¨μ΄λ‹€. JWT λ‚΄μ˜ ν΄λ ˆμž„μ€ JSON 객체둜 μΈμ½”λ”©λ˜λ©°, JSON μ›Ή μ„œλͺ…(JWS)을 μ‚¬μš©ν•˜μ—¬ λ””μ§€ν„Έ μ„œλͺ…λœλ‹€. μ„ νƒμ μœΌλ‘œ, JSON μ›Ή μ•”ν˜Έν™”(JWE)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•”ν˜Έν™”ν•  μˆ˜λ„ μžˆλ‹€.

ꡬ쑰

JWTλŠ” 일반적으둜 헀더(Header), νŽ˜μ΄λ‘œλ“œ(Payload), μ„œλͺ…(Signature)의 μ„Έ λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λ˜λ©°, 점(.)으둜 κ΅¬λΆ„λ©λ‹ˆλ‹€. κ·Έ κ΅¬μ‘°λŠ” header.payload.signature이닀.

  • 헀더(Header): ν—€λ”λŠ” 보톡 ν† ν°μ˜ μœ ν˜•(JWT)κ³Ό μ‚¬μš©λ˜λŠ” μ„œλͺ… μ•Œκ³ λ¦¬μ¦˜(예: HMAC SHA256 λ˜λŠ” RSA)의 두 λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λœλ‹€.
{
  "alg": "HS256",
  "typ": "JWT"
}
  • νŽ˜μ΄λ‘œλ“œ(Payload): νŽ˜μ΄λ‘œλ“œμ—λŠ” ν΄λ ˆμž„μ΄ ν¬ν•¨λ©λ‹ˆλ‹€. ν΄λ ˆμž„μ€ μ—”ν‹°ν‹°(보톡 μ‚¬μš©μž)에 λŒ€ν•œ μ§„μˆ κ³Ό μΆ”κ°€ λ°μ΄ν„°μž…λ‹ˆλ‹€. λ“±λ‘λœ ν΄λ ˆμž„, 곡개 ν΄λ ˆμž„, 개인 ν΄λ ˆμž„μ˜ μ„Έ κ°€μ§€ μœ ν˜•μ΄ μžˆλ‹€.
    • λ“±λ‘λœ ν΄λ ˆμž„(Registered Claims): 이듀은 ν•„μˆ˜λŠ” μ•„λ‹ˆμ§€λ§Œ μœ μš©ν•œ μƒν˜Έ 운용 ν΄λ ˆμž„ μ„ΈνŠΈλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ 미리 μ •μ˜λœ ν΄λ ˆμž„ μ„ΈνŠΈμ΄λ‹€. μΌλΆ€λŠ” iss(λ°œκΈ‰μž), exp(만료 μ‹œκ°„), sub(주제), aud(λŒ€μƒμž) 등이닀.
    • 곡개 ν΄λ ˆμž„(Public Claims): JWTλ₯Ό μ‚¬μš©ν•˜λŠ” 이듀이 μ›ν•˜λŠ” λŒ€λ‘œ μ •μ˜ν•  수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ μΆ©λŒμ„ ν”Όν•˜κΈ° μœ„ν•΄ IANA JSON μ›Ή 토큰 λ ˆμ§€μŠ€νŠΈλ¦¬μ— μ •μ˜λ˜κ±°λ‚˜ 좩돌 λ°©μ§€ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό ν¬ν•¨ν•˜λŠ” URI둜 μ •μ˜λ˜μ–΄μ•Ό ν•œλ‹€.
    • 개인 ν΄λ ˆμž„(Private Claims): λ™μ˜ν•˜λŠ” λ‹Ήμ‚¬μž 간에 정보λ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•΄ μƒμ„±λœ μ‚¬μš©μž μ •μ˜ ν΄λ ˆμž„μœΌλ‘œ, λ“±λ‘λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ 곡개 ν΄λ ˆμž„μ΄ μ•„λ‹ˆλ‹€.
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true,
  "iat": 1516239022
}
  • μ„œλͺ…(Signature): μ„œλͺ… 뢀뢄을 μƒμ„±ν•˜λ €λ©΄, μΈμ½”λ”©λœ 헀더와 μΈμ½”λ”©λœ νŽ˜μ΄λ‘œλ“œ, λΉ„λ°€ν‚€, 헀더에 λͺ…μ‹œλœ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ μ„œλͺ…ν•΄μ•Ό ν•œλ‹€. 예λ₯Ό λ“€μ–΄, HMAC SHA256 μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λŠ” 경우, μ„œλͺ…은 λ‹€μŒκ³Ό 같은 λ°©μ‹μœΌλ‘œ μƒμ„±λœλ‹€.
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

JWT의 μž‘λ™ 방식

  • 인증(Authentication): μ‚¬μš©μžκ°€ λ‘œκ·ΈμΈν•œ ν›„, 각 후속 μš”μ²­μ—λŠ” JWTκ°€ ν¬ν•¨λ˜μ–΄, ν•΄λ‹Ή ν† ν°μœΌλ‘œ ν—ˆμš©λœ 경둜, μ„œλΉ„μŠ€ 및 λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλ‹€.
  • 정보 κ΅ν™˜(Information Exchange): JWTλŠ” 예λ₯Ό λ“€μ–΄ 곡개/개인 ν‚€ μŒμ„ μ‚¬μš©ν•˜μ—¬ μ„œλͺ…ν•  수 있기 λ•Œλ¬Έμ—, λ°œμ‹ μžκ°€ 그듀이 μ£Όμž₯ν•˜λŠ” μ‚¬λžŒμΈμ§€ ν™•μ‹ ν•  수 μžˆλ‹€. λ˜ν•œ, μ„œλͺ…은 헀더와 νŽ˜μ΄λ‘œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ³„μ‚°λ˜λ―€λ‘œ, λ‚΄μš©μ΄ λ³€κ²½λ˜μ§€ μ•Šμ•˜λŠ”μ§€λ„ 검증할 수 μžˆλ‹€.
sequenceDiagram
    participant User
    participant Client
    participant Server
    participant Protected Resource

    %% 인증 ν”„λ‘œμ„ΈμŠ€
    Note over User,Protected Resource: Authentication Flow
    User->>Client: Login with credentials
    Client->>Server: Send credentials
    Server->>Server: Validate credentials
    Server->>Client: Generate & return JWT
    Client->>Protected Resource: Request with JWT
    Protected Resource->>Protected Resource: Validate JWT
    Protected Resource->>Client: Return requested resource

    %% 정보 κ΅ν™˜ ν”„λ‘œμ„ΈμŠ€
    Note over User,Protected Resource: Information Exchange Flow
    Client->>Server: Request with JWT
    Server->>Server: Verify signature
    Server->>Server: Validate claims
    alt Signature valid
        Server->>Client: Process request
    else Signature invalid
        Server->>Client: Return error
    end
Loading

9. Infrastructure as Code (IaC)λž€?

Infrastructure as Code (IaC) λŠ” μˆ˜λ™ ν”„λ‘œμ„ΈμŠ€κ°€ μ•„λ‹Œ μ½”λ“œλ₯Ό 톡해 인프라λ₯Ό κ΄€λ¦¬ν•˜κ³  ν”„λ‘œλΉ„μ €λ‹ν•˜λŠ” 방식이닀. IaCλ₯Ό μ‚¬μš©ν•˜λ©΄, ν•˜λ“œμ›¨μ–΄κ°€ μ•„λ‹Œ ꡬ성 νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ 인프라가 κ΄€λ¦¬λœλ‹€. 이 μ ‘κ·Ό 방식은 κ°œλ°œμžμ™€ IT 운영 νŒ€μ΄ ν•˜λ“œμ›¨μ–΄ μ„€μ •μ΄λ‚˜ ꡬ성을 μˆ˜λ™μœΌλ‘œ μ„€μ •ν•˜λŠ” λŒ€μ‹  μžλ™μœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό 관리, λͺ¨λ‹ˆν„°λ§ 및 ν”„λ‘œλΉ„μ €λ‹ν•  수 있게 ν•΄μ€€λ‹€.

핡심 원칙

  • μžλ™ν™”(Automation): IaCλŠ” 인프라 배포λ₯Ό μžλ™ν™”ν•˜μ—¬ λΉ λ₯΄κ³  μΌκ΄€λœ 섀정을 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.
  • λ©±λ“±μ„±(Idempotency): IaC μ‹œμŠ€ν…œμ˜ μž‘μ—…μ€ ν•œ λ²ˆμ΄λ‚˜ μ—¬λŸ¬ 번 싀행될 수 있으며 λ™μΌν•œ κ²°κ³Όλ₯Ό 보μž₯ν•˜μ—¬ μ‹ λ’°μ„±κ³Ό 일관성을 보μž₯ν•œλ‹€.
  • 버전 관리(Version Control): 인프라 ꡬ성은 버전 관리 μ‹œμŠ€ν…œμ— μ €μž₯λ˜μ–΄ λ³€κ²½ 좔적, 기둝, 및 둀백을 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.

이점

  • 속도 및 νš¨μœ¨μ„±(Speed and Efficiency): μΈν”„λΌμ˜ μ‹ μ†ν•œ ν”„λ‘œλΉ„μ €λ‹μ„ 톡해 개발 및 배포 μ£ΌκΈ°λ₯Ό λΉ λ₯΄κ²Œ ν•  수 μžˆλ‹€.
  • 일관성 및 μ‹ λ’°μ„±(Consistency and Reliability): ν”„λ‘œλΉ„μ €λ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό μžλ™ν™”ν•˜μ—¬ μΈκ°„μ˜ 였λ₯˜λ₯Ό μ΅œμ†Œν™”ν•˜κ³  ν™˜κ²½μ„ 맀번 μΌκ΄€λ˜κ²Œ ν”„λ‘œλΉ„μ €λ‹μ„ 보μž₯ν•œλ‹€.
  • ν™•μž₯μ„±(Scalability): μˆ˜λ™ κ°œμž… 없이 ꡬ성 파일의 λ³€κ²½μœΌλ‘œ 인프라λ₯Ό μ‰½κ²Œ ν™•μž₯ν•˜κ±°λ‚˜ μΆ•μ†Œν•  수 μžˆλ‹€.
  • λΉ„μš© 절감(Cost Savings): 물리적 ν•˜λ“œμ›¨μ–΄μ™€ μˆ˜λ™ λ…Έλ™μ˜ ν•„μš”μ„±μ„ 쀄여 μ‹œκ°„μ΄ 지남에 따라 λΉ„μš©μ„ μ ˆκ°ν•œλ‹€.

도ꡬ

IaCλ₯Ό μš©μ΄ν•˜κ²Œ ν•˜λŠ” μ—¬λŸ¬ 도ꡬ듀이 있으며, 각각 자체적인 문법과 μƒνƒœκ³„λ₯Ό κ°€μ§€κ³  μžˆλ‹€:

  • Terraform: HashiCorp에 μ˜ν•΄ 개발된 μ˜€ν”ˆμ†ŒμŠ€ λ„κ΅¬λ‘œ, ν΄λΌμš°λ“œ 및 μ˜¨ν”„λ ˆλ―ΈμŠ€ λ¦¬μ†ŒμŠ€ λͺ¨λ‘λ₯Ό 관리할 수 μžˆλ‹€.
  • AWS CloudFormation: Amazon Web Servicesμ—μ„œ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€λ‘œ, ν…œν”Œλ¦Ώμ— μ •μ˜λœ AWS λ¦¬μ†ŒμŠ€λ₯Ό 관리할 수 μžˆλ‹€.
  • Ansible: ν΄λΌμš°λ“œ ν”„λ‘œλΉ„μ €λ‹, ꡬ성 관리 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포λ₯Ό μœ„ν•œ κ°„λ‹¨ν•œ μžλ™ν™”λ₯Ό μ œκ³΅ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ 도ꡬ이닀.
  • Chef: Ruby 기반 λ ˆμ‹œν”Όλ₯Ό μ‚¬μš©ν•˜μ—¬ 인프라 ν”„λ‘œλΉ„μ €λ‹μ„ μžλ™ν™”ν•˜λŠ” ꡬ성 관리 도ꡬ이닀.
  • Puppet: IT μΈν”„λΌμ˜ μƒνƒœλ₯Ό μ •μ˜ν•  수 있게 ν•˜κ³  μ˜¬λ°”λ₯Έ μƒνƒœλ₯Ό μžλ™μœΌλ‘œ μ§‘ν–‰ν•˜λŠ” 또 λ‹€λ₯Έ ꡬ성 관리 도ꡬ이닀.

10. CI/CDλž€?

CI (Continuous Integration, 지속적 톡합)

지속적 톡합은 κ°œλ°œμžλ“€μ΄ μž‘μ—…ν•œ μ½”λ“œλ₯Ό 주기적으둜 곡유 λ ˆν¬μ§€ν† λ¦¬μ— ν•©μΉ˜λŠ” 것을 λ§ν•œλ‹€. 이 과정은 μžλ™ν™”λœ λΉŒλ“œμ™€ ν…ŒμŠ€νŠΈλ₯Ό ν¬ν•¨ν•˜μ—¬, μ½”λ“œ λ³€κ²½ 사항이 문제λ₯Ό μΌμœΌν‚€μ§€ μ•ŠλŠ”μ§€ ν™•μΈν•œλ‹€. 지속적 ν†΅ν•©μ˜ μ£Όμš” λͺ©μ μ€ μ†Œν”„νŠΈμ›¨μ–΄ 개발 κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό 쑰기에 λ°œκ²¬ν•˜κ³  ν•΄κ²°ν•˜λŠ” 것이닀.

CD (Continuous Deployment, 지속적 배포)

지속적 λ°°ν¬λŠ” 개발된 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 고객이 μ‚¬μš©ν•  수 μžˆλŠ” ν™˜κ²½κΉŒμ§€ μžλ™μœΌλ‘œ λ°°ν¬ν•˜λŠ” 것을 λ§ν•œλ‹€. μ΄λŠ” 지속적 톡합 과정을 거친 ν›„, 좔가적인 μˆ˜λ™ κ³Όμ • 없이 κ³ κ°μ—κ²Œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ œκ³΅ν•˜λŠ” 것을 ν¬ν•¨ν•œλ‹€. 지속적 배포λ₯Ό 톡해 μ†Œν”„νŠΈμ›¨μ–΄μ˜ μƒˆλ‘œμš΄ 버전을 λΉ λ₯΄κ²Œ κ³ κ°μ—κ²Œ 전달할 수 μžˆλ‹€.

CI/CD의 μž₯점

  • νš¨μœ¨μ„± μ¦λŒ€: μžλ™ν™”λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό 톡해 개발 및 배포 κ³Όμ •μ˜ 속도가 빨라지고, 였λ₯˜ λ°œμƒ κ°€λŠ₯성이 쀄어든닀.
  • ν’ˆμ§ˆ ν–₯상: 지속적인 ν…ŒμŠ€νŠΈμ™€ 톡합을 톡해 μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν’ˆμ§ˆμ΄ κ°œμ„ λœλ‹€.
  • 고객 λ§Œμ‘±λ„ ν–₯상: λΉ λ₯Έ 배포λ₯Ό 톡해 μ‚¬μš©μžμ˜ ν”Όλ“œλ°±μ„ μ‹ μ†ν•˜κ²Œ λ°˜μ˜ν•˜κ³ , μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ°œμ„  사항을 λΉ λ₯΄κ²Œ μ œκ³΅ν•  수 μžˆλ‹€.

CI/CD 도ꡬ

CI/CD νŒŒμ΄ν”„λΌμΈμ„ κ΅¬μΆ•ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” μ—¬λŸ¬ 도ꡬ가 μžˆλ‹€. κ°€μž₯ 인기 μžˆλŠ” 도ꡬ 쀑 μΌλΆ€λŠ” λ‹€μŒκ³Ό κ°™λ‹€:

  • Jenkins: λ‹€μ–‘ν•œ CI/CD μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ§€μ›ν•˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ μžλ™ν™” μ„œλ²„μ΄λ‹€. JenkinsλŠ” λ°©λŒ€ν•œ ν”ŒλŸ¬κ·ΈμΈ μƒνƒœκ³„λ‘œ 맀우 λ§žμΆ€ν™”ν•  수 μžˆλ‹€.
  • Travis CI: GitHub ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•œ 지속적 톡합 μ„œλΉ„μŠ€μ΄λ‹€. GitHub μ €μž₯μ†Œμ™€μ˜ 톡합이 μš©μ΄ν•˜κ³  μ‚¬μš©μ΄ κ°„νŽΈν•˜λ‹€λŠ” μž₯점이 μžˆλ‹€.
  • GitLab CI/CD: μ†ŒμŠ€ μ½”λ“œ 관리와 CI/CDλ₯Ό ν•˜λ‚˜μ˜ ν”Œλž«νΌμœΌλ‘œ ν†΅ν•©ν•œ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•œλ‹€. κ°•λ ₯ν•œ νŒŒμ΄ν”„λΌμΈ ꡬ성을 μ œκ³΅ν•œλ‹€.
  • CircleCI: λΉ λ₯Έ λΉŒλ“œμ™€ 배포λ₯Ό μ§€μ›ν•˜λŠ” ν΄λΌμš°λ“œ 기반 CI/CD μ„œλΉ„μŠ€μ΄λ‹€. GitHubκ³Ό Bitbucket과의 μš°μˆ˜ν•œ 톡합 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • GitHub Actions: GitHub μ €μž₯μ†Œ λ‚΄μ—μ„œ μ›Œν¬ν”Œλ‘œμš° μžλ™ν™”λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€. GitHub ActionsλŠ” CI/CDμ—μ„œ 이슈 λΆ„λ₯˜κΉŒμ§€ λͺ¨λ“  μ†Œν”„νŠΈμ›¨μ–΄ μ›Œν¬ν”Œλ‘œμš°λ₯Ό μžλ™ν™”ν•˜λŠ” 것을 μ‰½κ²Œ λ§Œλ“€μ–΄ μ€€λ‹€.
  • ArgoCD: Kubernetesλ₯Ό μœ„ν•œ 선언적 GitOps 지속적 배포 도ꡬ이닀. ArgoCDλ₯Ό μ‚¬μš©ν•˜λ©΄ μ†ŒμŠ€ μ½”λ“œ μ €μž₯μ†Œλ₯Ό μ§„λ¦¬μ˜ κ·Όμ›μœΌλ‘œ μ‚¬μš©ν•˜μ—¬ Kubernetes λ¦¬μ†ŒμŠ€λ₯Ό μœ μ§€ κ΄€λ¦¬ν•˜κ³  관리할 수 μžˆλ‹€.
  • Bamboo: μžλ™ν™”λœ λΉŒλ“œ, ν…ŒμŠ€νŠΈ, 릴리즈λ₯Ό ν•˜λ‚˜μ˜ μ›Œν¬ν”Œλ‘œμš°λ‘œ κ²°ν•©ν•˜λŠ” 지속적 톡합 및 배포 도ꡬ이닀. λ‹€λ₯Έ Atlassian μ œν’ˆλ“€κ³Ό 잘 ν†΅ν•©λœλ‹€.
  • TeamCity: JetBrainsμ—μ„œ μ œκ³΅ν•˜λŠ” λΉŒλ“œ 관리 및 지속적 톡합 μ„œλ²„μ΄λ‹€. λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° 언어와 κΈ°μˆ μ„ μ§€μ›ν•˜λ©° 포괄적인 κΈ°λŠ₯ μ„ΈνŠΈλ₯Ό κ°€μ§€κ³  μžˆλ‹€.

11. APM(Application Performance Monitoring)μ΄λž€?

APM(μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§) 은 μ†Œν”„νŠΈμ›¨μ–΄ 도ꡬ와 원격 μΈ‘μ • 데이터λ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„μ¦ˆλ‹ˆμŠ€ 크리티컬 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯을 λͺ¨λ‹ˆν„°λ§ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§ν•œλ‹€. APM은 IT μ „λ¬Έκ°€κ°€ λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ 문제λ₯Ό κ°μ§€ν•˜κ³  μ§„λ‹¨ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ˜ˆμƒ μ„œλΉ„μŠ€ μˆ˜μ€€μ„ μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” 데 도움을 μ€€λ‹€.

APM μ£Όμš” ꡬ성 μš”μ†Œ

APMμ—λŠ” 일반적으둜 λ‹€μŒκ³Ό 같은 λͺ‡ κ°€μ§€ μ£Όμš” ꡬ성 μš”μ†Œκ°€ ν¬ν•¨λœλ‹€.

  • μ„±λŠ₯ μ§€ν‘œ: APM λ„κ΅¬λŠ” 응닡 μ‹œκ°„, νŠΈλžœμž­μ…˜ λ³Όλ₯¨, 였λ₯˜μœ¨, μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€ μ‚¬μš©λŸ‰ λ“± λ‹€μ–‘ν•œ μ„±λŠ₯ μ§€ν‘œμ— λŒ€ν•œ 데이터λ₯Ό μˆ˜μ§‘ν•œλ‹€.
  • μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§: APM은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§μ„ μ œκ³΅ν•˜μ—¬ μ„±λŠ₯ 이상 및 쀑단을 μ‹ μ†ν•˜κ²Œ κ°μ§€ν•œλ‹€.
  • μ΅œμ’… μ‚¬μš©μž λͺ¨λ‹ˆν„°λ§: μ΅œμ’… μ‚¬μš©μžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μƒν˜Έ μž‘μš©ν•˜λŠ” 방식과 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯이 μ‚¬μš©μž κ²½ν—˜μ— λ―ΈμΉ˜λŠ” 영ν–₯을 μΆ”μ ν•œλ‹€. μ—¬κΈ°μ—λŠ” λΈŒλΌμš°μ € 및 λͺ¨λ°”일 μ•± μ„±λŠ₯ 뢄석이 포함될 수 μžˆλ‹€.
  • λΆ„μ‚° 좔적 및 νŠΈλžœμž­μ…˜ ν”„λ‘œνŒŒμΌλ§: APM λ„κ΅¬λŠ” λΆ„μ‚° μ•„ν‚€ν…μ²˜ λ‚΄μ˜ λ‹€μ–‘ν•œ μ„œλΉ„μŠ€μ™€ ꡬ성 μš”μ†Œμ—μ„œ νŠΈλžœμž­μ…˜μ„ μΆ”μ ν•˜κ³  μ‹œκ°ν™”ν•  수 μžˆλ‹€. μ΄λŠ” νŠΈλžœμž­μ…˜ μ²΄μΈμ—μ„œ μ§€μ—°μ΄λ‚˜ μ‹€νŒ¨κ°€ λ°œμƒν•˜λŠ” μœ„μΉ˜λ₯Ό μ •ν™•νžˆ μ°Ύμ•„λ‚΄λŠ” 데 도움이 λœλ‹€.
  • 뢄석 및 보고: APM μ†”λ£¨μ…˜μ€ μˆ˜μ§‘λœ 데이터λ₯Ό μ²˜λ¦¬ν•˜κ³ , νŒ¨ν„΄μ„ μ‹λ³„ν•˜κ³ , 잠재적인 문제λ₯Ό μ˜ˆμΈ‘ν•˜κ³ , μ‹€ν–‰ κ°€λŠ₯ν•œ 톡찰λ ₯을 μ œκ³΅ν•˜λŠ” 뢄석 도ꡬλ₯Ό μ œκ³΅ν•œλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν† ν΄λ‘œμ§€ 검색: μ΅œμ‹  APM λ„κ΅¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‹€μ–‘ν•œ ꡬ성 μš”μ†Œμ™€ 쒅속성을 μžλ™μœΌλ‘œ κ²€μƒ‰ν•˜κ³  λ§€ν•‘ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜μ— λŒ€ν•œ 포괄적인 보기λ₯Ό μ œκ³΅ν•  수 μžˆλ‹€.

APM 도ꡬ

  • Dynatrace: μ„±λŠ₯ 문제λ₯Ό κ°μ§€ν•˜κ³  μ§„λ‹¨ν•˜λŠ” 심측 λͺ¨λ‹ˆν„°λ§ κΈ°λŠ₯κ³Ό κ΄‘λ²”μœ„ν•œ μžλ™ν™”λ‘œ 잘 μ•Œλ €μ Έ μžˆλ‹€.
  • New Relic: κ°•λ ₯ν•œ 뢄석 κΈ°λŠ₯을 톡해 포괄적인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 인프라 λͺ¨λ‹ˆν„°λ§μ„ μ œκ³΅ν•œλ‹€.
  • Datadog: ν΄λΌμš°λ“œ ν™˜κ²½μ— 쀑점을 두고 μ„œλ²„, λ°μ΄ν„°λ² μ΄μŠ€, 도ꡬ 및 μ„œλΉ„μŠ€ μ „λ°˜μ— λŒ€ν•œ λͺ¨λ‹ˆν„°λ§μ„ μ œκ³΅ν•œλ‹€.
  • AppDynamics: μƒμ„Έν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ 톡찰λ ₯ 및 λΉ„μ¦ˆλ‹ˆμŠ€ μ„±κ³Ό λͺ¨λ‹ˆν„°λ§μ— 쀑점을 λ‘”λ‹€.

참고 자료

⚠️ **GitHub.com Fallback** ⚠️