보고서 정보
주관연구기관 |
울산과학기술원 Ulsan National Institute of Science and Technology |
보고서유형 | 연차보고서 |
발행국가 | 대한민국 |
언어 |
한국어
|
발행년월 | 2016-04 |
과제시작연도 |
2015 |
주관부처 |
미래창조과학부 Ministry of Science, ICT and Future Planning |
등록번호 |
TRKO201600015497 |
과제고유번호 |
1711028338 |
사업명 |
SW컴퓨팅산업원천기술개발 |
DB 구축일자 |
2016-12-17
|
키워드 |
빅데이터.고성능컴퓨팅.빅데이터 플랫폼.데이터 사이언스.하둡.Big Data.High Performance Computing.BigData Platform.Data Science.Hadoop.
|
DOI |
https://doi.org/10.23000/TRKO201600015497 |
초록
▼
연구개발 목표
본 과제의 최종목표는 기존 빅데이터 에코시스템의 성능을 크게 뛰어넘는 초고성능 빅데이터 에코시스템을 개발하는 것이다. 이 빅데이터 에코시스템은 서로 다른 CPU와 메모리, 디스크, 네트워크 등의 이기종 서버와 클러스터를 갖춘 이기종 데이터센터에서 스스로 Heterogeneity를 자가 인식(self-awareness)하고 적응(self-adaptation)하여, 최적의 성능을 발휘하는 고속 빅데이터 플랫폼 및 시스템 소프트웨어들로 구성된다.
연구개발 내용
본 과제는 기존 하둡 에코시스템에 고성능
연구개발 목표
본 과제의 최종목표는 기존 빅데이터 에코시스템의 성능을 크게 뛰어넘는 초고성능 빅데이터 에코시스템을 개발하는 것이다. 이 빅데이터 에코시스템은 서로 다른 CPU와 메모리, 디스크, 네트워크 등의 이기종 서버와 클러스터를 갖춘 이기종 데이터센터에서 스스로 Heterogeneity를 자가 인식(self-awareness)하고 적응(self-adaptation)하여, 최적의 성능을 발휘하는 고속 빅데이터 플랫폼 및 시스템 소프트웨어들로 구성된다.
연구개발 내용
본 과제는 기존 하둡 에코시스템에 고성능 컴퓨팅 기술을 접목하여 하둡 에코시스템의 성능을 향상시키는 방향과, 고성능 컴퓨팅에 기반한 새로운 빅데이터 처리시스템을 개발하여 하둡 에코시스템을 고속화하는 두 개의 큰 방향으로 진행 중이다.
[엔진 연구]
우선 고성능 컴퓨팅에 기반한 새로운 빅데이터 처리 시스템은 메모리를 최대한 활용하여 빠른 데이터 처리를 가능하게 한다. 최근의 클러스터 환경에서는 로컬디스크에서 데이터를 읽는 것보다 원격 메모리에서 데이터를 읽는 것이 더 빠르다는 것이 알려져 있다. 기존의 HDFS 기반 빅데이터 에코 시스템들과 달리 본 과제에서 개발하는 빅데이터 처리 시스템은 데이터의 로컬리티보다 로드밸런스를 더 고려하고 대형 클러스터의 방대한 분산 메모리를 최대한 활용하도록 설계하였다.
1) 1차년도에 엔진팀은 분산 공유 메모리를 최대한 활용할 수 있도록 분산 인메모리 키-밸류 스토어를 개발하였으며, 이 키-밸류 스토어의 컨텐트를 고려하는 태스크 스케줄러를 개발하였다. 이러한 분산 인메모리 키-밸류 스토어는 Spark의 RDDS와는 달리 사용자가 데이터를 캐싱할 것인지를 결정하는 방식이 아니라 OS의 버퍼 캐시와 같이 자체적으로 시스템이 최근에 사용된 데이터를 캐싱하는 방식을 사용한다. Spark의 RDDS는 인풋 데이터와 중간 결과물을 캐싱하는 용도로 사용하는데, 본 과제에서 개발한 분산 인메모리 캐시는 OS의 버퍼 캐시와 같이 동적으로 캐시된 데이터가 변화하는 것을 특징으로 한다. Spark와는 달리 중간 결과물은 디스크에 저장하는 것을 원칙으로 하여 시스템이 죽을 경우에, 디스크에 저장된 중간 결과물을 사용하여 복구할 수 있도록 구현하고 있다.
2) 이러한 분산 캐시 환경에서 맵리듀스 프레임워크를 개발하였고 기계학습을 위한 반복 작업을 지원하도록 프레임워크를 개발하였다. 이 프레임워크는 Java로 구현하지 않고 C++ 언어로 구현함으로써, 데이터를 전송할 때 Serialization과 Desrialization을 하지 않고, 태스크가 실행될 때 JVM 컨테이너를 생성하지 않아,성능을 크게 향상시킬 수 있었다. 빅데이터 처리 성능 향상 목표인 Hadoop 대비 60배 성능 향상을 달성하였고 반복작업/기계학습 응용의 1차년도 목표인 Hadoop 대비 60배 성능 향상도 달성하였다. 응용 패턴 통합 지원인 배치+반복 작업을 현재 지원하여 목표를 달성하였다.
3) 또한, C++ 언어 기반 프레임워크 상에서 SQL 쿼리를 지원하기 위해 DB 엔진을 현재 구현하는 중이다. 이 SQL 엔진은 복잡 쿼리 처리 성능 향상을 위하여 기존의 Row 메이저 분할 혹은 Column 메이저 분할 방식이 아닌 Value 메이저 분할방식을 사용하는데, Value 메이저 분할 방식을 사용함으로써 데이터 셔플을 최소화하고 성능을 개선하고자 한다.
4) 또한 빅데이터의 중요한 응용 중 하나인 그래프 데이터 처리 속도를 향상시키기 위하여 그래프의 정점(버텍스) 기반 분할 방법이 아닌 간선(엣지) 기반 분할 방법을 사용한 그래프 처리 엔진을 개발하였다. 이 그래프 엔진을 사용하여 1차년도 목표인 14억개의 정점을 가지는 그래프를 1초 이내에 처리하여 목표를 달성하였다. 간선 중심 분할 기법 이외에도 GPU를 사용하여 대규모 그래프를 CPU로부터 GPU로 스트림 전송하여 그래프 알고리즘을 병렬처리하는 기법을 개발하여, 하나의 GPU 서버로 수십 노드를 가진 클러스터 컴퓨터 성능을 내는 성과를 거두었다.
[가속기 연구]
가속기 연구팀은 GPU를 이용한 맵리듀스 시스템의 성능 및 사용성 향상을 위한 연구를 수행하였다. 본 연구팀은 크게 다음과 같은 서로 유기적으로 연결되는 3가지의 주제에 대한 연구개발을 수행하였다.
1) 첫째, 맵리듀스 시스템에서 GPU와 CPU를 동시에 활용 가능하게 해주는 스케줄러를 설계, 구현하였다. 본 스케줄러는 하둡 기반의 맵리듀스 시스템을 기반으로 개발하였으며, 단일 노드에 다수의 CPU와 GPU가 장착이 된 시스템에서 CPU 맵태스크와 GPU 맵태스크의 이질성을 고려하여 주어진 응용 프로그램을 최적으로 실행할 수 있도록 설계하였다.
2) 둘째, 현존하는 맵리듀스 시스템 (하둡, 스파크 등)이 대부분 Java기반으로 구현된 점에 착안하여, Java 바이트 코드로부터 GPU 언어인 CUDA PTX를 생성할수 있는 Java2PTX 컴파일러와 이를 GPU에서 실행하는 계산 오프로더를 개발하였다.
3) 셋째, 맵리듀스 시스템을 이용하여 GPU 가속기능이 지원되는 컴퓨팅 코드 작성을 간단히 하면서도 성능은 기존 수작업으로 작성된 GPU 코드를 이용한 맵리듀스 코드에 필적하는 성능을 보이는 고수준 맵리듀스 전용 언어인 Vispark를 개발하였다. 이를 위해 스파크 맵리듀스 시스템을 기반으로 Python과 유사한 언어설계 및 언어번역기를 개발 하였으며, 다차원 정형 데이터의 분산 처리를 위해 스파크 RDD의 확장인 VRDD 및 노드간 직접통신 방법을 개발하였다. 또한 다양한 맵리듀스 고유 함수들을 개발하였다.
[자원관리기술 연구]
자원관리기술 연구팀은 다중 빅데이터 워크로드 자원 관리를 위한 핵심 기술에 대한 연구를 수행하였다. 특히 다중 워크로드간의 자원 경쟁에 의한 간섭의 영향을 줄이는 핵심 요소 기술들을 중점적으로 연구하였다. 본 연구팀은 클러스터 레벨의 자원 관리 기술과 서버 레벨의 자원 관리 기술에 대해 다음과 같이 간섭 영향을 고려하는 4가지 주제에 대한 연구개발을 수행하였다.
1) 첫 번째로 빅데이터 워크로드에 대한 간섭을 고려한 성능 모델링 기법을 연구하였다. 메모리 관련 자원에 대한 간섭을 단계화 하는 기법을 기반으로 간섭 환경에서 분산 병렬 응용의 성능을 예측하는 방법론을 연구하였다. 또한, Grep, Sort,WC 등 대표 하둡 응용들에 대해 CPU, I/O의 다중 자원에 대한 간섭 영향을 분석하여 그 영향이 매우 클수 있음을 보이고, Regression 기반 하둡 성능 예측 모델을 개발하였다. 이 성능 예측 모델을 기반으로 간섭의 영향을 고려하는 기초적인 하둡 스케줄링 (클러스터 레벨) 방법을 개발하여, 빅데이터 응용의 성능이 간섭에 의해 저하되지 않도록 스케줄링하는 기법으로 성능이 향상되는 가능성을 보여 주었다.
2) 두 번째로, 이기종 노드의 집합으로 구성된 빅데이터 처리 클러스터에서 동적자원 변화를 고려한 고효율 빅데이터 워크로드 스케줄링을 위한 요소 기술을 연구 개발하였다. Hadoop 및 Spark의 다중 프레임워크 워크로드 실행이 가능한 이종 기기 Mesos 클러스터를 구성하여, 간섭에 의한 영향을 확인하고 Mesos 스케줄링 방식의 문제점을 파악하였다. 또한, 본 연구는 Mesos의 자원 분배 방식에서 다중 프레임워크 작동 시 발생하는 오버헤드를 실시간 예측 및 자원 충돌 상황을 분석해내고, 이를 방지하기 위한 워크로드 동적 분산 및 이동 기술과 스토리지 자원 통합 기술을 연구 개발하였다.
3) 세 번째로, 여러 워크로드가 동시에 실행되는 고성능 컴퓨팅 서버의 메모리 자원 성능 isolation을 위한 프로파일러 기법을 연구하였다. 데이터 접근이 많은 빅데이터 워크로드들은 지연시간이 짧은 캐시 메모리를 효율적으로 사용하고 메인 메모리로의 접근이 원활해야 고성능을 보장 받을 수 있다. 하지만 제한된 크기의 메모리 시스템 때문에 워크로드간에는 캐시 메모리와 메모리 컨트롤러를 차지하기 위한 경쟁상황이 발생하여 심각한 성능 저하가 발생할 수 있기 때문에 본 연구에서는 빅데이터 워크로드의 메모리 시스템 경합 원인 요소를 분석 하였다. 이 분석 결과를 바탕으로 캐시 메모리 오염 상황을 완화시켜줄 factor 및 메모리 컨트롤서 경합 상황을 완화시켜줄 factor를 모색하고 온라인 프로파일러를 개발하였다.
4) 네 번째로, 다중 워크로드가 같은 서버에서 실행될 때 메모리 자원 경쟁을 줄이기 위한 인메모리 빅데이터 플랫폼에 superpaging 기법을 적용하였다. 인메모리 빅데이터 플랫폼에서 수행되는 워크로드들은 대용량의 메모리를 필요로 하며 기존의 계산 중심의 워크로드에 비해 메모리 접근 빈도가 높은 편으로 low TLB coverage 현상으로 성능이 저하되는 문제를 superpaging 기법을 적용하여 해결하고자 하였다. 인메모리 빅데이터 플랫폼인 Spark를 사용하여, superpaging 기법으로 THP와 HugeTLBfs를 적용하여 빅데이터 워크로드 성능 효과를 정량적으로 분석하였다. 또한, superpaging과 NUMA를 고려한 메모리 배치 기법의 영향과 태스크 스케줄러의 영향을 분석하여, superpaing과 더불어 최적화된 메모리 관리 및 태스크 스케줄링 기법이 필요하다는 것을 확인하였다.
[스토리지/네트워크 연구]
빅데이터 프레임워크를 위한 스토리지/네트워크 연구팀의 1차년도 주요 연구 개발 내용은 다음과 같다.
1) 우선, P2P 방식의 비중앙 집중식 분산 파일 시스템을 개발하였다. HDFS의 큰 문제점으로 지적되고 있는 것 중 하나는 파일의 분할 정보를 관리하는 네임노드 병목 현상이다. 이러한 네임노드의 확장성을 높이고 Single Point of Failure 문제를 해결하기 위해, DHT를 적용하여 모든 노드가 파일의 분할 정보 및 메타데이터를 분할하여 관리하도록 하는 비중앙 집중식 분산 파일 시스템을 개발하였다. 이 파일 시스템은 GitHub에 오픈소스로 공개하였다(https://github.com/DICL/EclipseDFS). 현재 HDFS의 모든 API를 지원하지 않고 있어, Hadoop과 호환성 문제가 있으나 2차년도에는 Hadoop API와 연결하여 HDFS를 대체하는 파일시스템으로 연구개발하고자 한다.
2) 또한, 네트워크 직접 연결 저장장치 (NDAS)에 대한 성능평가와 장치 관리자 제작 및 네트워크 직접 연결 저장장치 기반의 분산파일 시스템 개발을 위한 모델링을 진행하였다. 동시에 기존의 분산파일시스템(HDFS, Lustre, GlusterFS) 분석도 이루어졌다. 단일 네트워크 직접 연결 저장장치에 대한 성능 분석 결과, 기존에 사용되는 NAS 저장장치보다 비용대비 만족할만한 성능을 보인다. 하지만 확장성 측정을 위해 다수의 네트워크 직접 연결 저장장치로 구성하여 실험한 성능 평가에서 만족스럽지 못한 결과가 측정되었다. 추후 이러한 문제의 원인을 파악하고 다시 확장성에 대한 평가가 필요할 것으로 보인다.
3) 네트워크 연구팀은 Hadoop과 Spark의 네트워크 병목 현상을 분석하였다. 이 연구 결과를 기반으로 내린 결론은 Apache Flink나 Apache Spark와 같은 Java 기반 In-memory data analytic framework는 Data format을 바꾸어야 하는 Serialization/ Deserialization과 압축 등에 의한 CPU 병목이 Network I/O나 Disk I/O에 의한 병목보다 월등히 크기 때문에 general한 Spark의 네트워크 stack을 새롭게 디자인하더라도 기대되는 성능향상이 크지 않을 것으로 판단된다. 엔진팀에서 구현하고 있는 C++ 언어로 구현한 framework에서는 Spark에서 관찰되는 CPU병목이 비교적 미미하여 I/O에 의한 성능향상을 기대할 수 있을 것으로 판단된다.
4) 다양한 분산 병렬 파일 시스템을 통합하는 연구에서 통합 가상 파일 시스템(Unified Virtual File System) UniFS를 개발하였다. UniFS는 FUSE (Filesystem in USErspace) 위에서 작성되었으며 메타데이터 서비스인 UniMD와 함께 둘 이상의 저장 장소들을 통합하여 사용자에게 단일 네임스페이스 서비스로 제공하는 기능을 수행한다. UniFS는 FUSE에서 제시하고 있는 open, read, write, mkdir, readdir 등 26가지 callback을 활용하여 구현하였다. 파일의 읽기와 쓰기, 디렉터리의 생성과 삭제 등 다른 file system에서 기대할 수 있는 기능을 모두 탑재하였으며, 실행환경에 extended attribute기능을 활성화 및 비활성화 할 수 있다. UniMD로의 메타데이터 Query에 사용되는 프로토콜은 protobuf를 이용하여 정의하였고 이를 기반으로 한 grpc 라이브러리를 사용하여 rpc call 들을 작성하였다. UniFS는 실제데이터의 위치를 UniMD에게 질의해야하는 의존성을 가지고 있다. 따라서 UniFS에 가해지는 부담은 UniMD 부하로 전해지며 다수의 클라이언트가 존재하는 상황에서 UniMD 과부하로 성능 저하가 발생할 수 있다.
[대규모 작업 배치 처리 엔진 개발]
High Throughput Computing은 천문학, 약학, 물리학 등을 중심으로 수백만에서 수십억 개의 작업이 매우 짧은 시간에 수행되는데, 이러한 HTC 응용을 효과적으로 지원하기 위해서 본 연구팀은 YARN 기반의 Hadoop을 확장하여 MOHA (Mtc On HAdoop) 프레임워크 프로토타입을 개발하였다. 이 프로토타입은 MOHA Client,ActiveMQ/Kafka를 활용하여 작업 큐를 생성하고 JDL에 명시되어 있는 태스크들을 입력하는 MOHA Manager, 그리고 이러한 작업들을 큐에서 끌어와 처리할 수 있는 MOHA TaskExecutor로 구성된다. 이 프로토타입을 사용하여 작은 테스트베드에서 성능을 측정한 결과 3차년도 목표치를 달성할 수 있는 가능성을 확인하였다.
[시스템 운영 관리 기술 개발]
시스템 운영 관리 기술 개발 연구는 Apache Ambari의 Server, Agent, Metrics Collector, Metrics Monitor, REST API 등 각 기능을 분석하고, Lustre 파일 시스템의 운영 환경을 조사하였다. 이 Apache Ambari를 기반으로 하여, 본 연구팀은 신규 서비스를 추가하고, 관리, 모니터링 하는 방법을 연구하였으며, Ambari REST API를 이용하여 자체 모니터링 정보 표출을 위한 Chameleon 프로토타입을 개발하고 있다.
[거대과학 응용 기술 개발]
본 연구에서는 대표적인 거대 응용 분야인 차세대 염기서열 유전체 분석(Next Generation Sequencing, NGS) 연구를 하둡 기반의 분석 환경에서 수행하고 고성능컴퓨팅 기술을 접목하여 고속화하는 것을 목표로, 다음과 같은 연구를 1차년도에 수행하였다.
1) 생명정보 분야의 유전체 빅데이터 분석 서비스 개발을 위한 빅데이터 처리 관련 기술 요구 사항 도출
2) 빅데이터 처리 프레임워크 기반 병렬 유전체 분석 동향 조사
3) 빅데이터 처리 프레임워크 기반 병렬 유전체 분석 도구 성능 향상 선행 연구
연구개발 성과
엔진 연구팀은 본 연구를 통해 새로운 빅데이터 처리 엔진의 프로토타입을 개발하였다. Java 기반 프레임워크의 Serialization/ Deserialization 및 JVM 컨테이너 오버헤드를 없애기 위해 C++ 언어로 개발하였으며, 분산 공유 메모리 캐시를 적극 활용하도록 설계하여 성능을 Hadoop 대비 60배 이상 향상시킬 수 있었다.
엔진 연구팀의 결과물은 맵리듀스 엔진에서 분산 공유 메모리를활용 가능하게 하는 EclipseDCache 프로토타입, 맵리듀스 엔진 및 반복 작업을 고속화한 EclipseMR 프레임워크, 그리고 그래프 데이터 처리를 가속화한 GSTREAM, 그래프 데이터를 간선 중심으로 처리하는 그래프 처리 엔진이 있다. 현재 SQL 엔진프로토타입 개발도 최근 완료되어 성능을 측정하였으며, 현재 성능은 Hive 대비 4배 성능 향상을 얻었으나, 추가 성능 개선이 가능할 것으로 보고 분석 중이다.
가속기 연구팀은 본 연구를 통해 GPU 클러스터에서 하둡을 이용할 때 CPU와 GPU를 동시에 활용하여 성능을 향상시키는 intra-node 스케줄러를 설계하였고,사례 연구를 통해 이론적 수치에 매우 근접한 성능개선비를 실험을 통해 확인하였다. 또한 Java2PTX JIT 컴파일러와 계산 오프로더를 통해 하둡 기반 맵리듀스 코드가 자동적으로 GPU 코드로 변환되어 실행될 수 있게 되었다. 또한 맵리듀스 프레임워크에서 비주얼 컴퓨팅을 효과적으로 실행하기 위한 여러 방법(정규 격자데이터, Socket 응용, GPU 가속)등을 제안하였으며 이들을 모두 통합하고 사용자가 쉽게 GPU 비주얼 컴퓨팅 코드를 작성할 수 있는 High-level Python-like 언어를 중심으로 하는 Vispark를 구현하였다. Vispark는 기존 맵리듀스 시스템 보다 비주얼 컴퓨팅에서 월등한 성능을 보였으며, 사용성 측면에서도 더 나을 결과를 보였다.
스토리지/네트워크 연구팀은 P2P 방식의 분산 파일 시스템 개발을 완료하여 HDFS의 병목 현상을 해결하였으며, 분산 파일 시스템을 GitHub에 공개하였다.통합 가상 파일 시스템 UniFS도 현재 프로토타입을 개발완료하였으며, NDAS 성능 분석을 완료하였다.
대규모 태스크 배치 처리 연구팀은 YARN 기반 MOHA 프레임워크 실행 모델을 설계 및 개발하기 위해 분산 작업 큐에 기반한 초당 태스크 배포율 향상 PoC를 수행하였다.
운영관리 연구팀은 빅데이터 클러스터 운영관리를 위한 오픈소스 프로젝트인 Apache Ambari의 기능을 분석 연구하고, 고성능 파일 시스템인 Lustre 기반의 하둡 운영관리 도구 프로토타입을 개발하였다.
거대과학 연구팀은 대용량 유전체 분석 시나리오를 위한 파이프라인 실행 환경을 구축하고, 분산 병렬 파일시스템 기반 하둡을 활용한 유전체 분석 도구 성능을 분석하였다.
활용계획 및 기대효과
슈퍼 컴퓨팅 분야에서 주로 활용되었던 고성능 컴퓨팅 기술이 빅데이터 분야에도 점차적으로 적용되고 있다. IDC는 2015년도에 빅데이터 처리용 고성능 컴퓨팅 서버 시장의 매출액이 약 10억불에 이를 것으로 예측하였고, 최근 발표 결과에 의하면 실제로 이 예측치에 도달하고 있다고 보고되고 있다. 본 연구를 통해 개발될 고성능 컴퓨팅 기반 빅데이터 처리 가속 기술은 국내 기술로 고성능 빅데이터 에코시스템의 독자적인 브랜드를 만들어 성장하고 있는 고속 빅데이터 플랫폼 시장에 진입하고, 국내 IT 소프트웨어 산업 성장에 기여한다.
목차 Contents
- 표 지 ... 1
- 정보통신·방송 연구개발 연차 보고서 ... 2
- 제출문 ... 3
- 목 차 ... 4
- 국문요약문 ... 5
- 1. 연구개발 목표 ... 12
- 가. 최종 목표 ... 12
- 나. 당해 (연도·단계) 연구개발 목표 및 결과 ... 12
- 2. 연구 범위 및 연구 수행 방법 ... 15
- 3. 연구개발 목표의 달성도 및 자체 평가 ... 19
- 가. 연구개발성과 및 평가 방법 ... 19
- 나. 당해 (연도·단계) 정량적 연구성과 목표 및 달성도 ... 22
- 다. 당해 (연도·단계) 질적 성과 목표 및 달성도 ... 23
- 4. 연구개발성과 ... 23
- 가. 지식재산권(특허, 실용신안, 의장, 디자인, 상표, 규격, 신품종, 프로그램) ... 23
- 나. 국내 및 국외 논문 게재 ... 24
- 다. 국내 및 국제학술회의 발표 ... 25
- 라. 표준화 ... 25
- 마. 기술 거래(이전) 등 ... 25
- 바. 사업화 투자 실적 ... 25
- 사. 사업화 현황 ... 25
- 아. 저작권(소프트웨어, 서적 등) ... 26
- 자. 생명자원(생물자원, 생명정보)/화합물 ... 26
- 차. 전문 연구 인력 양성 ... 26
- 카. 산업 기술 인력 양성 ... 26
- 타. 기술요약정보 ... 26
- 하. 보고서 원문 ... 26
- 5. 구매 금액이 3천만원 이상인 연구시설·장비 구축 현황 ... 27
- 6. 연구개발비 집행 실적 ... 27
- 7. 연구 수행에 따른 문제점 및 개선 방향 ... 29
- 8. 중요 연구 변경 사항 ... 29
- 9. 기타 건의 사항 ... 29
- 붙임1. 자체 보안관리 진단표 ... 30
- 붙임2. 연구실 안전조치 이행표 ... 31
- 붙임3. 1차년도 연구개발 상세 내용 및 결과 ... 32
- 끝페이지 ... 101
※ AI-Helper는 부적절한 답변을 할 수 있습니다.