platform classDef boundary fill:none,stroke-dasharray: 5 5 public:::boundary private:::boundary cloud:::boundary data_pipeline:::boundary "> platform classDef boundary fill:none,stroke-dasharray: 5 5 public:::boundary private:::boundary cloud:::boundary data_pipeline:::boundary "> platform classDef boundary fill:none,stroke-dasharray: 5 5 public:::boundary private:::boundary cloud:::boundary data_pipeline:::boundary ">
flowchart TD

    user(이용자)
    platform(통합 플랫폼)
    lb((Load\\nBalancer))
    was((WAS))
    kafka((로그 수집기\\nKafka))
    airflow((로그 분석기\\nAirflow))
    db[|borders:tb|관계형 데이터베이스\\nCloudDB]
    fs[|borders:tb|네트워크 파일 시스템\\nNAS]
		s3[|borders:tb|미디어 저장소\\nObjectStorage]
		s3_log[|borders:tb|데이터레이크\\nObjectStorage]
		
		user--미디어 업로드-->s3
		user<--수업자료,교실정보,학습기록-->lb
		lb--학습로그-->kafka

    subgraph cloud [Naver Cloud]
    		subgraph public [Public]
					  lb
					  s3
				end
				subgraph private [Private]
				    lb<-->was
		        db<--관계형 데이터-->was
		        s3--미디어 조회-->was
		        was<--파일-->fs
						db-->airflow
		        subgraph data_pipeline [데이터 파이프라인]
			        kafka-->s3_log
			        s3_log-->airflow
		        end
				end

    end
    airflow--"xAPI"-->platform
    classDef boundary fill:none,stroke-dasharray: 5 5
    public:::boundary
    private:::boundary
    cloud:::boundary
    data_pipeline:::boundary