βπ[Backend Development] μμ€ν μν€ν μ²λ?β
β 1οΈβ£ μμ€ν μν€ν μ²λ?
π1οΈβ£ μμ€ν μν€ν μ²μ κ°λ .
- μμ€ν
μν€ν
μ²λ μννΈμ¨μ΄ μμ€ν
μ μ€κ³νκ³ κ΅¬μ±νλ ꡬ쑰λ₯Ό μλ―Έν©λλ€.
- μ½κ² λ§ν΄, νλμ μννΈμ¨μ΄κ° μ΄λ»κ² ꡬμ±λκ³ , λ°μ΄ν°κ° μ΄λ»κ² νλ₯΄λ©°, μ±λ₯κ³Ό νμ₯μ±μ μ΄λ»κ² κ³ λ €ν μ§ κ²°μ νλ κ³Όμ μ λλ€.
π2οΈβ£ μμ€ν μν€ν μ²μ μν .
- νμ₯μ±(Scalability) : μ¬μ©μκ° μ¦κ°ν΄λ μ±λ₯μ΄ μ μ§λλλ‘ μ€κ³
- κ°μ©μ±(Availability) : μ₯μ λ°μ μμλ μ§μμ μΌλ‘ μ΄μ κ°λ₯νλλ‘ μ€κ³
- 보μ(Security) : λ°μ΄ν° λ³΄νΈ λ° μΈμ¦, κΆν κ΄λ¦¬
- μ μ§λ³΄μμ±(Maintainability) : μ½λ μμ λ° κΈ°λ₯ μΆκ°κ° μ½κ² κ°λ₯νλλ‘ κ΅¬μ‘° μ€κ³
- μ±λ₯(Performance) : λΉ λ₯΄κ² λμνλλ‘ μ΅μ ν
β 2οΈβ£ μμ€ν μν€ν μ²μ μ£Όμ κ΅¬μ± μμ,
- μμ€ν μ μ¬λ¬ μ»΄ν¬λνΈλ‘ ꡬμ±λλ©°, κ°κ°μ μν μ΄ λ€λ¦ λλ€.
π1οΈβ£ ν΄λΌμ΄μΈνΈ(Client)
- μ¬μ©μκ° μ§μ μ‘°μνλ λΆλΆ (μΉ λΈλΌμ°μ , λͺ¨λ°μΌ μ±)
- μμ²μ μλ²μ μ λ¬νκ³ κ²°κ³Όλ₯Ό νμνλ μν
- μ: React, Vue.js, Android, iOS
π2οΈβ£ API κ²μ΄νΈμ¨μ΄ (API Gateway)
- ν΄λΌμ΄μΈνΈ μμ²μ λ΄λΆ μλΉμ€λ‘ λΌμ°ν νλ μν
- μΈμ¦, λ‘λ λ°Έλ°μ±, μΊμ±λ±μ μλ₯ μν
- μ: Kong, Nginx, AWS API Gatewat
π3οΈβ£ μ ν리μΌμ΄μ μλ² (Application Server)
- λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ ν΅μ¬ μ»΄ν¬λνΈ
- REST API λλ GraphQLμ ν΅ν΄ λ°μ΄ν°λ₯Ό μ 곡
- μ: Spring Boot, Node.js, Django, FastAPI
π4οΈβ£ λ°μ΄ν°λ² μ΄μ€ (Database)
- λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ‘°ννλ μν
- RDBMS (MySQL, PostgreSQL) vs NoSQL (MongoDB, Cassandra)
π5οΈβ£ μΊμ μλ² (Cache Server)
- μμ£Ό μ¬μ©λλ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ 곡νλ μν
- μ: Redis, Memcached
π6οΈβ£ λ©μμ§ ν (Message Queue, MQ)
- λΉλκΈ° μ΄λ²€νΈ μ²λ¦¬λ₯Ό μν μμ€ν
- μ: Kafka, RabbitMQ, AWS SQS
π7οΈβ£ λ‘λ λ°Έλ°μ (Load Balancer)
- μμ²μ μ¬λ¬ μλ²λ‘ λΆμ°νμ¬ λΆνλ₯Ό μ€μ΄λ μν
- μ: Nginx, HAProxy, AWS ELB
π8οΈβ£ λͺ¨λν°λ§ μμ€ν (Monitoring System)
- μλ² μν, νΈλν, μ₯μ λ°μ κ°μ§
- μ: Prometheus, Grafana, AWS CloudWatch
β 3οΈβ£ μ£Όμ μμ€ν μν€ν μ² ν¨ν΄
π1οΈβ£ Monolithic Architecture (λͺ¨λ리μ μν€ν μ²)
π νΉμ§
- νλμ μ ν리μΌμ΄μ μ΄ λͺ¨λ κΈ°λ₯μ ν¬ν¨νλ ꡬ쑰
- λͺ¨λ μ½λκ° νλμ νλ‘μ νΈλ‘ ꡬμ±λ¨
β μ₯μ
- κ°λ° μ΄κΈ° λ¨κ³μμ κ°λ¨ν κ΅¬μ‘°λ‘ λΉ λ₯΄κ² κ°λ° κ°λ₯
- λ°°ν¬κ° λ¨μν¨
β λ¨μ
- νλμ κΈ°λ₯ λ³κ²½ μ μ 체 μμ€ν μ λ€μ λ°°ν¬ν΄μΌ ν¨
- νΉμ κΈ°λ₯λ§ νμ₯νκΈ° μ΄λ ΅κ³ , νΈλν½ μ¦κ°μ μ·¨μ½ν¨
π μμ
- μ ν΅μ μΈ μΉ μ ν리μΌμ΄μ (Spring Boot + MySQL)
π2οΈβ£ Microservices Architecture (λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ², MSA)
π νΉμ§
- μ ν리μΌμ΄μ μ μ¬λ¬ κ°μ μμ μλΉμ€λ‘ λΆλ¦¬νμ¬ κ°λ°
- κ° μλΉμ€κ° λ 립μ μΌλ‘ λ°°ν¬ κ°λ₯
- μλΉμ€ κ° ν΅μ μ API (REST, gRPC) λλ λ©μμ§ ν(Kafka)λ‘ μ΄λ£¨μ΄μ§
β μ₯μ
- κ°λ³ μλΉμ€ νμ₯μ΄ κ°λ₯νμ¬ μ±λ₯ μ΅μ νκ° μ¬μ
- νΉμ μλΉμ€λ§ μ λ°μ΄νΈ κ°λ₯νμ¬ μ μ§λ³΄μκ° μ¬μ
β λ¨μ
- μλΉμ€ κ° ν΅μ λΉμ©μ΄ μ¦κ°νμ¬ λ€νΈμν¬ μ±λ₯ μ ν κ°λ₯
- κ° μλΉμ€ κ° λ°μ΄ν° μΌκ΄μ± μ μ§κ° μ΄λ €μ
π μμ
- Netflix, Uber, μΉ΄μΉ΄μ€, ν μ€ κ°μ λκ·λͺ¨ μλΉμ€μμ μ¬μ©λ¨
π3οΈβ£ Layerd Architecture (κ³μΈ΅ν μν€ν μ²)
π νΉμ§
- μ ν리μΌμ΄μ μ κ³μΈ΅(Layer)λ³λ‘ λλμ΄ κ΄λ¦¬νλ λ°©μ
- μΌλ°μ μΌλ‘ 3-Tier λλ 4-Tier κ΅¬μ‘°λ‘ μ€κ³λ¨
π 3-Tier ꡬ쑰
- 1οΈβ£ Presentation Layer (νλ μ ν μ΄μ κ³μΈ΅) β UI & ν΄λΌμ΄μΈνΈ
- 2οΈβ£ Application Layer (μ ν리μΌμ΄μ κ³μΈ΅) β λΉμ¦λμ€ λ‘μ§
- 3οΈβ£ Data Layer (λ°μ΄ν° κ³μΈ΅) β λ°μ΄ν° μ μ₯ λ° μ‘°ν
β μ₯μ
- μν λΆλ¦¬κ° λͺ ννμ¬ μ μ§λ³΄μμ±μ΄ λ°μ΄λ¨
- μ¬μ¬μ© κ°λ₯ν μ½λ ꡬ쑰
β λ¨μ
- λ€μΈ΅ κ΅¬μ‘°λ‘ μΈν΄ μλ΅ μλκ° λλ €μ§ μ μμ
π4οΈβ£ Event-Driven Architecture (μ΄λ²€νΈ κΈ°λ° μν€ν μ²)
π νΉμ§
- μ΄λ²€νΈκ° λ°μνλ©΄ νΉμ μλΉμ€μμ μ΄λ₯Ό μ²λ¦¬νλ λ°©μ
- λ©μμ§ ν(Kafka, RabbitMQ)λ₯Ό νμ©νμ¬ λΉλκΈ° μ²λ¦¬λ₯Ό ν¨
β μ₯μ
- λΉλκΈ° λ°©μμΌλ‘ νΈλν½μ λΆμ°ν μ μμ΄ μ±λ₯ μ΅μ ν κ°λ₯
- κ° μλΉμ€κ° λ 립μ μΌλ‘ μλνμ¬ μ₯μ λ°μ μ μν₯μ΄ μ μ
β λ¨μ
- μ΄λ²€νΈ νλ¦μ μΆμ νκΈ° μ΄λ €μ λλ²κΉ μ΄ μ΄λ €μ
- λ©μμ§ μ§μ°(latency)μ΄ λ°μν μ μμ
π μμ
- μ£Όλ¬Έ μμ€ν : μ£Όλ¬Έμ΄ λ°μνλ©΄ Order Serviceμμ Payment Serviceλ‘ μ΄λ²€νΈ μ μ‘
β 4οΈβ£ νμ₯ κ°λ₯ν μμ€ν μ€κ³ μμΉ.
π1οΈβ£ Scal-Up vs Scale-Out
- Scale-Up : μλ²μ μ±λ₯μ μ κ·Έλ μ΄λ (RAM, CPU μΆκ°)
- Scalce-Out : μλ² κ°μλ₯Ό λλ € λΆνλ₯Ό λΆμ° (λ‘λ λ°Έλ°μ νμ©)
π2οΈβ£ λ°μ΄ν°λ² μ΄μ€ μ΅μ ν
- μ€λ©(Sharding) : λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬λ¬ κ°λ‘ λλμ΄ μ μ₯
- λ ν리μΌμ΄μ (Replication) : λμΌν λ°μ΄ν°λ₯Ό μ¬λ¬ μλ²μ 볡μ νμ¬ μ½κΈ° μ±λ₯ ν₯μ
π3οΈβ£ λ‘λ λ°Έλ°μ± (Load Balancing)
- Round Robin : μλ²μ μμ°¨μ μΌλ‘ μμ² μ λ¬
- Least Connections : νμ¬ μ μμκ° κ°μ₯ μ μ μλ²λ‘ μμ² μ λ¬
π4οΈβ£ μ₯μ 볡ꡬ (Fault Tolerance)
- Failover : μ₯μ λ°μ μ λ체 μλ²λ‘ μλ μ ν
- Circuit Breaker : μΌμ νμ μ΄μ μ€ν¨νλ©΄ μλΉμ€ μ°¨λ¨
β 5οΈβ£ κ²°λ‘
μμ€ν μν€ν μ²λ μννΈμ¨μ΄μ μ±λ₯κ³Ό νμ₯μ±, μ μ§λ³΄μμ±μ κ²°μ νλ μ€μν μμμ λλ€.
- μ΄λ°μλ λͺ¨λ리μ μν€ν μ²λ‘ λΉ λ₯΄κ² κ°λ°
- νΈλν½μ΄ μ¦κ°νλ©΄ λ§μ΄ν¬λ‘μλΉμ€ μμΌν μ²λ‘ νμ₯
- λΉλκΈ° μ²λ¦¬κ° νμνλ©΄ μ΄λ²€νΈ κΈ°λ° μν€ν μ² λμ