Skip to content

πŸ₯ 응급싀 κ°€μš©λ³‘μƒ λͺ¨λ‹ˆν„°λ§ 및 μ˜ˆμ•½ μ„œλΉ„μŠ€ WeER λ°±μ—”λ“œ 리포지토리

Notifications You must be signed in to change notification settings

Woori-Emergency/WeER_backend

Repository files navigation

🦺 WeER(μœ„μ•Œ): 응급싀 κ°€μš©λ³‘μƒ λͺ¨λ‹ˆν„°λ§ 및 μ˜ˆμ•½ μ„œλΉ„μŠ€

πŸ† 우리FIS 아카데미 ν΄λΌμš°λ“œ μ—”μ§€λ‹ˆμ–΄λ§ 3κΈ° πŸ…μ΅œμ’… ν”„λ‘œμ νŠΈ μš°μˆ˜μƒ

πŸ₯ κ³ κ°€μš©μ„± ν΄λΌμš°λ“œ μ‹œμŠ€ν…œ ꡬ좕(HA)


πŸ›  Tech Stack
🌐 Frontend React Styled Components
πŸ–₯ Backend Spring Framework Spring JPA Spring Security JWT
πŸ—ƒ DB MySQL
πŸŽ₯ Monitoring & Logging ElasticSearch Fluentd Kibana Prometheus Grafana
πŸš€ DevOps Jenkins ArgoCD Docker SonarQube
πŸ§ͺ Test K6 JUnit
πŸ”§ Tools GitHub Notion Swagger UI Slack
☁ Amazon Web Services - Compute: Elastic Compute Cloud (Amazon EC2), Amazon EC2 Auto Scaling, AWS EKS, AWS Lambda
- Load Balancing: Application Load Balancer (ALB)
- Storage: Amazon S3, Amazon Relational Database Service (Amazon RDS)
- Networking & Content Delivery: Amazon Route53, Amazon Certificate Manager, Amazon Site-to-Site VPN
- Monitoring & Management: Amazon CloudWatch
☁ Google Cloud Platform - Compute: GCP Compute Engine, GCP Instance Groups
- Load Balancing: GCP Load Balancing
- Storage: Google Cloud Storage, Cloud SQL, Artifact Registry
- Networking & Content Delivery: Cloud VPN, Cloud DNS, Certificate Manager, Cloud Armor
- Monitoring & Management: Cloud Logging

πŸ“ Project

졜근 β€˜μ‘κΈ‰μ‹€ 뺑뺑이’ 문제둜 인해 생λͺ…이 μœ„κΈ‰ν•œ 쀑증 ν™˜μžλ“€μ΄ μ μ ˆν•œ 치료λ₯Ό λ°›μ§€ λͺ»ν•˜λŠ” 상황이 λΉˆλ²ˆν•˜κ²Œ λ°œμƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κ³ μž, β€˜WeER’ ν”„λ‘œμ νŠΈλŠ” μ‹€μ‹œκ°„ 응급싀 병상 정보λ₯Ό μ œκ³΅ν•˜λŠ” κ³ κ°€μš©μ„± ν΄λΌμš°λ“œ μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜μ—¬ κΈ΄κΈ‰ μƒν™©μ—μ„œ μ‹ μ†ν•œ 병상 확보λ₯Ό μ§€μ›ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

β€˜WeERβ€™λŠ” ν΄λΌμš°λ“œ 기반의 ν•˜μ΄λΈŒλ¦¬λ“œ μ›Œν¬λ‘œλ“œ ν™˜κ²½μ„ λ„μž…ν•˜μ—¬, μ‚¬μš©μž 접속이 κΈ‰μ¦ν•˜λŠ” μƒν™©μ—μ„œλ„ μ•ˆμ •μ μΈ μ„œλΉ„μŠ€ 제곡이 κ°€λŠ₯ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ©€ν‹° ν΄λΌμš°λ“œ DR(μž¬ν•΄ 볡ꡬ) ν™˜κ²½μ„ κ΅¬μΆ•ν•˜μ—¬ ν΄λΌμš°λ“œ μ „λ°˜μ˜ 쀑단 μ‚¬νƒœμ—λ„ λŒ€λΉ„ν•˜κ³ μž ν•©λ‹ˆλ‹€. μ΄λŠ” 졜근 Microsoft ν΄λΌμš°λ“œμ˜ 전체 λ‹€μš΄νƒ€μž„κ³Ό 같은 사고에 λŒ€μ‘ν•˜κΈ° μœ„ν•΄ AWS와 GCPλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” λ©€ν‹° ν΄λΌμš°λ“œ ν™˜κ²½μ„ 톡해 쀑단 μ—†λŠ” μ„œλΉ„μŠ€ μ œκ³΅μ„ λͺ©ν‘œλ‘œ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

β€˜WeERβ€™λŠ” μ‹œκ°„λŒ€λ³„λ‘œ λ³€λ™ν•˜λŠ” μ‚¬μš©μž μˆ˜μš”μ— 따라 μœ μ—°ν•œ ν™•μž₯κ³Ό μΆ•μ†Œκ°€ κ°€λŠ₯ν•˜λ©°, 이λ₯Ό 톡해 응급 μƒν™©μ—μ„œ ν™˜μžλ“€μ΄ μ‹ μ†ν•˜κ²Œ μ μ ˆν•œ 병상에 λ°°μ •λ˜μ–΄ 치료λ₯Ό 받을 수 μžˆλ„λ‘ ν•˜μ—¬ 응급 의료 μ‹œμŠ€ν…œμ˜ νš¨μœ¨μ„±μ„ λ†’μ΄λŠ” 데 κΈ°μ—¬ν•  κ²ƒμž…λ‹ˆλ‹€.

🌐 Front-End

πŸ₯ κ°œμš”

λ³Έ ν”„λ‘œμ νŠΈμ˜ ν”„λ‘ νŠΈμ—”λ“œλŠ” κΈ΄κΈ‰ μƒν™©μ—μ„œμ˜ 정보 가독성 ν–₯상에 쀑점을 λ‘μ—ˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ 상황 μ’…ν•©νŒμ˜ 정보 κ³Όμž‰ 문제λ₯Ό ν•΄κ²°ν•˜κ³ μž, μ‚¬μš©μž μ€‘μ‹¬μ˜ UI/UX κ°œμ„ μ„ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. 특히 κΈ΄λ°•ν•œ μˆœκ°„μ—λ„ ν•„μš”ν•œ 정보λ₯Ό μ¦‰κ°μ μœΌλ‘œ νŒŒμ•…ν•  수 μžˆλ„λ‘ 직관적인 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν–ˆμœΌλ©°, 이λ₯Ό 톡해 μ˜μ‚¬κ²°μ • 속도와 업무 νš¨μœ¨μ„±μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμ„ κ²ƒμœΌλ‘œ νŒλ‹¨λ©λ‹ˆλ‹€.

πŸ“± ν™”λ©΄ ꡬ성

νŽ˜μ΄μ§€ μŠ€ν¬λ¦°μƒ· κ΅¬ν˜„ κΈ°λŠ₯
🏠 메인 ν™”λ©΄ 메인 νŽ˜μ΄μ§€ - πŸ—ΊοΈ 지도에 ν˜„μž¬ κ°€μš© κ°€λŠ₯ν•œ 응급싀 ν‘œμ‹œ
- πŸ“ 거리순 응급싀 쑰회
- πŸ” ν•„ν„°λ§μˆœ 응급싀 쑰회
- πŸ₯ 응급싀 이름 κ²€μƒ‰μœΌλ‘œ ν˜„ μœ„μΉ˜μ—μ„œ 거리 및 μ†Œμš” μ‹œκ°„ 확인
πŸ“ 거리순 응급싀 쑰회 거리순 응급싀 쑰회 - πŸšΆβ€β™‚οΈ ν˜„μž¬ μœ„μΉ˜μ—μ„œ κ°€μž₯ κ°€κΉŒμš΄ 응급싀 확인
- πŸ”§ ν˜„μž¬ μž₯λΉ„ 확인
- πŸ“† μ˜ˆμ•½ κΈ°λŠ₯
πŸ” 필터링별 응급싀 쑰회 필터링별 응급싀 쑰회 - βš•οΈ 병원 필터링 쑰건 μ œμ‹œ
- πŸ₯ ν˜„μž¬ 상황에 λ§žλŠ” 응급싀 확인 κ°€λŠ₯
πŸ‘€ ν™˜μž 정보 μž…λ ₯ ν™˜μž 정보 μž…λ ₯ - πŸ“ 이솑할 ν™˜μž μƒνƒœ 정보 μž…λ ₯
πŸ“‹ ν™˜μž λ‚΄μ—­ νŽ˜μ΄μ§€ ν™˜μž λ‚΄μ—­ νŽ˜μ΄μ§€ - πŸš‘ ν˜„μž¬ 이솑쀑인 ν™˜μž 정보
- πŸ“Š 이솑 μ™„λ£Œν•œ ν™˜μž 정보 리슀트
- βœ… 이솑 μ™„λ£Œ κΈ°λŠ₯
πŸ“† 응급싀 μ˜ˆμ•½ 쑰회 응급싀 μ˜ˆμ•½ 쑰회 νŽ˜μ΄μ§€ - πŸƒ ν˜„μž¬ 이솑쀑인 ν™˜μž 정보
- πŸ”– ν•΄λ‹Ή ν™˜μžλ₯Ό μœ„ν•œ 응급싀 μ˜ˆμ•½
- βœ”οΈ μ˜ˆμ•½ 승인/반렀 확인
- βœ… 이솑 μ™„λ£Œ κΈ°λŠ₯
πŸ‘¨β€πŸ’Ό κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ - πŸ‘₯ νšŒμ› 정보 확인
- πŸ“ νšŒμ›κ°€μž… μš”μ²­ 리슀트 확인
- βœ… νšŒμ›κ°€μž… 승인/반렀
πŸ₯ 병원 μΈ‘ 승인/반렀 병원 μΈ‘ 승인/반렀 νŽ˜μ΄μ§€ - πŸ“‹ μš”μ²­ λ“€μ–΄μ˜¨ μ˜ˆμ•½ 확인
- βœ”οΈ μ˜ˆμ•½ μš”μ²­ 승인/반렀

πŸ‘¨πŸ»β€πŸ’» Back-End

🧩 μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜


| 인프라 μ•„ν‚€ν…μ²˜

image

WeER ν”„λ‘œμ νŠΈμ˜ 인프라 μ•„ν‚€ν…μ²˜λŠ” κ³ κ°€μš©μ„±(HA)κ³Ό λ©€ν‹° ν΄λΌμš°λ“œ DR(μž¬ν•΄ 볡ꡬ)λ₯Ό μœ„ν•΄ AWS와 GCPλ₯Ό κ²°ν•©ν•˜μ—¬ κ΅¬μΆ•λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 μ‹œμŠ€ν…œμ€ μ‚¬μš©μž μš”μ²­μ˜ μ•ˆμ •μ μΈ μ²˜λ¦¬μ™€ 데이터 보호λ₯Ό λͺ©ν‘œλ‘œ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

  • AWS μΈν”„λΌμ—μ„œλŠ” Amazon Route 53, AWS WAF, Amazon CloudFrontλ₯Ό 톡해 μ‚¬μš©μž μš”μ²­μ„ 졜적의 λ¦¬μ „μœΌλ‘œ λΌμš°νŒ…ν•˜κ³  λ³΄μ•ˆμ„ κ°•ν™”ν•©λ‹ˆλ‹€. μ›Ή 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„λŠ” 닀쀑 κ°€μš© μ˜μ—­μ— λ°°μΉ˜λ˜μ–΄ 있으며, Application Load Balancer (ALB)κ°€ μ‚¬μš©μž μš”μ²­μ„ μ—¬λŸ¬ EC2 μ›Ή μ„œλ²„μ— λΆ„μ‚°ν•˜μ—¬ μ²˜λ¦¬ν•©λ‹ˆλ‹€. λ°μ΄ν„°λŠ” Aurora DB MySQL Connectorλ₯Ό 톡해 κΈ€λ‘œλ²Œν•˜κ²Œ λ™κΈ°ν™”λ˜μ–΄ 병상 정보λ₯Ό μ‹ μ†ν•˜κ²Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€. AWS Transit GatewayλŠ” 리전 κ°„ λ„€νŠΈμ›Œν¬ 톡신을 κ΄€λ¦¬ν•˜λ©°, CloudWatch와 AWS KMSκ°€ μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§κ³Ό 데이터 λ³΄μ•ˆμ„ μ œκ³΅ν•©λ‹ˆλ‹€. λ˜ν•œ, VPN Gatewayλ₯Ό 톡해 μ˜¨ν”„λ ˆλ―ΈμŠ€ 데이터 μ„Όν„°μ™€μ˜ μ•ˆμ „ν•œ 연결이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • GCP μΈν”„λΌμ—μ„œλŠ” Cloud Router, Cloud VPN, Cloud Armorλ₯Ό 톡해 AWSμ™€μ˜ λ³΄μ•ˆ 톡신을 μ§€μ›ν•˜λ©°, Compute Engine, Cloud SQL, Cloud Storage둜 데이터 μ²˜λ¦¬μ™€ μ €μž₯을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€. Database Migration Serviceλ₯Ό 톡해 AWS와 데이터λ₯Ό λ™κΈ°ν™”ν•˜κ³ , μž¬ν•΄ λ°œμƒ μ‹œ Route53의 failover κΈ°λŠ₯으둜 GCP둜 νŠΈλž˜ν”½μ„ μžλ™ μ „ν™˜ν•˜μ—¬ μ„œλΉ„μŠ€ 연속성을 보μž₯ν•©λ‹ˆλ‹€.

이 μ•„ν‚€ν…μ²˜λŠ” 단일 ν΄λΌμš°λ“œ μž₯애에도 쀑단 μ—†λŠ” μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•  수 μžˆλ„λ‘ AWS와 GCP의 λ³΄μ•ˆ 및 λͺ¨λ‹ˆν„°λ§ 도ꡬλ₯Ό κ²°ν•©ν•˜μ—¬ 데이터 λ³΄ν˜Έμ™€ μ„±λŠ₯ μ΅œμ ν™”λ₯Ό λ‹¬μ„±ν•©λ‹ˆλ‹€.


| μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ image

λ°±μ—”λ“œ μ„œλ²„λŠ” Spring Framework둜 κ΅¬μΆ•λ˜μ—ˆμœΌλ©°, Spring Security둜 λ³΄μ•ˆμ„ κ°•ν™”ν•˜κ³ , Spring Data JPAλ₯Ό 톡해 MySQL λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έμž‘μš©ν•©λ‹ˆλ‹€. 정기적인 데이터 μ—…λ°μ΄νŠΈμ™€ μ²˜λ¦¬λŠ” Spring Batchλ₯Ό 톡해 μžλ™ν™”λ˜λ©°, μ„œλ²„λŠ” Kubernetes ν™˜κ²½μ—μ„œ μš΄μ˜λ˜μ–΄ 높은 κ°€μš©μ„±κ³Ό ν™•μž₯성을 μ œκ³΅ν•©λ‹ˆλ‹€.

Prometheus와 Grafana둜 μ„œλ²„ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜μ—¬ 문제 λ°œμƒ μ‹œ μ‹ μ†νžˆ λŒ€μ‘ν•©λ‹ˆλ‹€. 둜그 κ΄€λ¦¬λŠ” ELK Stack을 톡해 이루어지며, μ‹œμŠ€ν…œ ν™œλ™μ„ μΆ”μ ν•˜μ—¬ μ•ˆμ •μ„±μ„ λ†’μž…λ‹ˆλ‹€.

CI/CD νŒŒμ΄ν”„λΌμΈμ€ Jenkins와 ArgoCDλ₯Ό 톡해 μžλ™ λΉŒλ“œμ™€ 배포λ₯Ό μ§€μ›ν•˜λ©°, Docker와 SonarQube둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ»¨ν…Œμ΄λ„ˆν™”ν•˜κ³  μ½”λ“œ ν’ˆμ§ˆμ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€. 이 μ•„ν‚€ν…μ²˜λŠ” μ‚¬μš©μž μˆ˜μš”μ— 따라 μœ μ—°ν•œ ν™•μž₯ 및 μΆ•μ†Œκ°€ κ°€λŠ₯ν•˜λ©°, 닀쀑 ν΄λΌμš°λ“œ ν™˜κ²½μ—μ„œ μž¬ν•΄ 볡ꡬ λŠ₯λ ₯을 톡해 쀑단 μ—†λŠ” μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ›’ DB 섀계

image

ν…Œμ΄λΈ” 이름 μ„€λͺ…
User μ‚¬μš©μž 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”λ‘œ, 둜그인 ID, 이름, λΉ„λ°€λ²ˆν˜Έ, μ—­ν• , 이메일, μ „ν™”λ²ˆν˜Έ λ“±μ˜ ν•„λ“œλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. 인증 및 κΆŒν•œ 뢀여에 ν•„μš”ν•œ 정보λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
Patient_Condition ν™˜μžμ˜ μƒνƒœ 정보λ₯Ό κΈ°λ‘ν•˜λŠ” ν…Œμ΄λΈ”μž…λ‹ˆλ‹€. 성별, μ—°λ ΉλŒ€, ν˜ˆμ••, λ§₯λ°•, 체온, 호흑 수, μ§ˆλ³‘ μ—¬λΆ€, μ˜μ‹ μˆ˜μ€€ λ“±μ˜ ν•„λ“œλ₯Ό 톡해 μ‹€μ‹œκ°„ ν™˜μž μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•©λ‹ˆλ‹€.
Reservation 병상 μ˜ˆμ•½ 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”μž…λ‹ˆλ‹€. 병원 ID, ν™˜μž μƒνƒœ ID, μ˜ˆμ•½ μƒνƒœ(λŒ€κΈ°, 승인, 거절, μ·¨μ†Œ) 등을 ν¬ν•¨ν•˜μ—¬ μ˜ˆμ•½μ˜ μ§„ν–‰ μƒνƒœλ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
ER_Announcement 응급싀 곡지 사항을 μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”λ‘œ, 병원 ID, λ©”μ‹œμ§€ μœ ν˜•, λ©”μ‹œμ§€ λ‚΄μš©, 쀑증 μ§ˆν™˜λͺ… 등을 ν¬ν•¨ν•˜μ—¬ 응급싀 κ΄€λ ¨ μ€‘μš” 곡지λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
Hospital λ³‘μ›μ˜ κΈ°λ³Έ 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”λ‘œ, 병원 ID, κΈ°κ΄€λͺ…, μ£Όμ†Œ, λŒ€ν‘œ μ „ν™”, 응급싀 μ „ν™”, μœ„λ„, 경도 λ“±μ˜ 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ λ³‘μ›μ˜ μœ„μΉ˜μ™€ μ—°λ½μ²˜λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
Equipment 병원 λ‚΄ 의료 μž₯λΉ„ 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”μž…λ‹ˆλ‹€. μž₯λΉ„μ˜ μ’…λ₯˜μ™€ μ‚¬μš© κ°€λŠ₯ μ—¬λΆ€ 등을 κ΄€λ¦¬ν•˜μ—¬ ν•„μš”ν•œ μž₯λΉ„κ°€ μ‚¬μš© κ°€λŠ₯ν•œμ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
ICU μ€‘ν™˜μžμ‹€ 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”λ‘œ, μ€‘ν™˜μžμ‹€ 병상 μˆ˜μ™€ 기타 μ„ΈλΆ€ 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ μ€‘ν™˜μžμ‹€μ˜ μƒνƒœλ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
Emergency_Room_Info 응급싀 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”λ‘œ, λ³‘μ›μ˜ 응급싀 ꡬ역별 병상 수 λ“±μ˜ 정보λ₯Ό κΈ°λ‘ν•˜μ—¬ μ‘κΈ‰μ‹€μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 병상을 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

About

πŸ₯ 응급싀 κ°€μš©λ³‘μƒ λͺ¨λ‹ˆν„°λ§ 및 μ˜ˆμ•½ μ„œλΉ„μŠ€ WeER λ°±μ—”λ“œ 리포지토리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5