Your SlideShare is downloading. ×
0
개발자 지향 WAS
- IBM WebSphere Liberty Server
 WAS infrastructure 의 현황과 시장의 트렌드
 개발자 지향 WAS - IBM WebSphere Liberty Server
– Liberty Server 를 통한 개발자 경험 향상

 데모

 Q&...
애플리케이션 인프라 트렌드

빠른 애플리케이션 개발과 전달을 위하여 개발 및 운영 라이프사이클에 대한
통합, 자동화, 단순화를 요구

모바일, 소셜, 클라우드 애플리케이션의 폭발적 증가에 따라 미들웨어 인프라에
대한 추...
WAS 에 대한 고객의 지속적인 변화 요구
WAS의 향상과 변화에 대해서 고객과 분석가들은 지속적으로 많은 요구사항을 전달

 개발자의 생산성 향상
 “Low-End” 애플리케이션 환경을 보다 단순화
 “Low-E...
목적 별로 적합한 WAS 의 선택 필요

=
 WAS infrastructure 의 현황과 시장의 트렌드
 개발자 지향 WAS - IBM WebSphere Liberty Server
– Liberty Server 를 통한 개발자 경험 향상

 데모

 Q&...
IBM WebSphere Application Server 의 인식

“IBM 영어 매뉴얼만 많고,
너무~ 어려워요.”

“안정적이고 기능은 좋은데,
너무~ 비싸요.”

“기능이 많아서 그런가,
너무~ 느려요.”
개발자가 원하는 것 - 경량화된 IBM WAS Liberty Server

IBM 이 제공하고자 했던 것

개발자가 원하는 건…
 개발에 편리한 가볍고 빠른 WAS

IBM WebSphere Liberty Server...
손쉬워진 설치


개발자와 ISV 에게는 IBM WAS Liberty Server 런
타임과 eclipse 연계 도구 모두 별도의 비용 없이 무
상으로 사용 가능함



개발 도구는 Eclipse 추가 기능으로 설치...
단순화된 서버 설정 – 단 하나의 server.xml 파일로 모든 설정 관리 가능
<server>
<featureManager>

서버에 설치되어 있는 번들에 대한 기능
제어 가능

<feature>jsp-2.2</fe...
단순화된 서버 설정 - 하나의 server.xml 파일/Eclipse 연동
WAS v8.5.5 Liberty 는 모든 설정이 하나의 server.xml 파일로 구성 가능하며 이를
통해서 공유/버전 관리가 용이(Eclip...
경량화 – 빠른 시작 시간/적은 풋프린트/높은 처리량
 경량화된 개발 환경에 대한 이슈를 IBM WebSphere에서 직접 해결할 수 있으며 경량화된
서버에서 완전한 운영환경 서버의 속도로 서비스 요청 처리 가능

...
그럼 그냥 Tomcat 하고 뭐가 다른가요?
애플리케이션의 기능 집합을 동적 적용 가능
운영환경
……
EJB-Lite 3.1

jpa-2.0

CDI 1.0

blueprint-1.0
jsp-2.2

osgi-jpa-1.0

jsf-2.0
servlet-3.0

...
Java EE Web Profile 지원(EJB 3.1 Lite 지원)
Java EE Web Profile 은 경량화 Web 애플리케이션 개발에 집중하여 해당 개발을
가능하게 하는 Java EE 표준에 대하여 적합한 부...
동적인 런타임

application

features
apps
resources

application

application

dropins location

server.xml
config updates
jsp-2...
OSGi 란 뭔가요?
OSGi 의 특징
 OSGi 기술은 Java 에서 동적 컴포넌트를 정의한 스펙이며 보다 강화된 모듈화, 버전 관리, 동적인 플
랫폼 제공을 가능하게 합니다.
Java VM
rt
jce
jsse
plugin
sunjce...
동적 런타임을 위한 세부 구조
동적 런타임을 위한 세부 구조
동적 런타임을 위한 세부 구조
SPI 를 통한 IBM WebSphere Liberty Server 확장
Liberty 확장 System Programming Interface(SPI) 를 통해 전체 어플리케이션
라이프사이클을 지원하는 커스텀 기능을 ...
더 경량화도 가능
jaxb
wsSecurity
jaxws

 설치 : 필요한 기능만 설치하여
디스크 풋프린트 최소화
– 모듈화된 “Archive Install” 또는
– 단일 Installation Manager 저장...
개발자를 위한 다양한 자료 및 샘플 제공
The Liberty Repository

 Liberty 플랫폼 확장을 위한 온라인 저장소 제
공
 포함되는 컨텐츠:
– Open source project integrat...
개발만이 아닌 운영이나
클라우드 관점에서 더 필요한 건 ?
대규모의 IBM WebSphere Liberty Server 도 관리 가능
관리를 위하여 IBM WebSphere Liberty Server 그룹을 집단화 할 수 있는 관리 모델
제공

–
–
–
–

Agent 가 필...
IMDB 솔루션인 WXS 를 연계 활용
A

App
App
App
App

 In-Memory Data Grid 솔루션을 활용해서 DB I/O
를 최소화하는 구조를 위하여 데이터를 메모리에
상주시킬 수 있기 때문에 반...
Cloud 에 대한 준비

Cloud Foundry

•개발자를 위한 IBM WebSphere Liberty Server
Buildpack 을 공개/자유롭게 사용 가능
•https://github.com/cloudfou...
요약 : 경량화된 IBM WAS Liberty Server

IBM 이 제공하고자 했던 것
위주에서 탈피하여
개발자/사용자가 원하는 것을
제공하기 위한 변화

IBM WebSphere Liberty 가
제공하는 건…
•...
 WAS infrastructure 의 현황과 시장의 트렌드
 개발자 지향 WAS - IBM WebSphere Liberty Server
– Liberty Server 를 통한 개발자 경험 향상

 데모

 Q&...
데모 : 개발환경 및 커스텀 기능 구성

 개발 환경 구성
 Eclipse 플러그인 설치
 Liberty 설치

 커스텀 기능 구성
 UserFeature

 패키징
데모 : 개발 환경 구성

 이클립스를 이용한 개발 환경 구성
1. Marketpalce 를 이용하여 Liberty 개발도구 설치
2. Servers  Runtime Environment 에 Liberty 설정
데모 : 커스텀 기능 구성

 OSGi 를 이용한 UserFeature 개발
1. OSGi Bundle Project 생성 ( UserFeatureBudle )
2. Liberty Feature Project 생성 (...
데모 : 패키징

 최소화 패키징을 통한 배포 용이성

1. 추가된 Custom Feature 와 함께 필요한 기능만 패키징
2. 압추파일 형태로 패키징 되며 옵션을 통해 최소화 패키징 가능

②

①
③
감사합니다.
Upcoming SlideShare
Loading in...5
×

개발자 지향 WAS : IBM WebSphere Liberty Server

1,381

Published on

Developer oriented WAS : IBM WebSphere Liberty Server

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,381
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
24
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "개발자 지향 WAS : IBM WebSphere Liberty Server"

  1. 1. 개발자 지향 WAS - IBM WebSphere Liberty Server
  2. 2.  WAS infrastructure 의 현황과 시장의 트렌드  개발자 지향 WAS - IBM WebSphere Liberty Server – Liberty Server 를 통한 개발자 경험 향상  데모  Q&A
  3. 3. 애플리케이션 인프라 트렌드 빠른 애플리케이션 개발과 전달을 위하여 개발 및 운영 라이프사이클에 대한 통합, 자동화, 단순화를 요구 모바일, 소셜, 클라우드 애플리케이션의 폭발적 증가에 따라 미들웨어 인프라에 대한 추가적인 요구사항 증가 엄청난 양의 데이터에 대항하여 거대한 트랜잭션 볼륨 지원 및 대기시간 최소화를 위해 탄력적인 캐싱 기술이 요구 다양한 폼 팩터와 접속 방법에 따라서 탄력성과 확장성, 멀티-테넌시, 컨텍스트 등을 제공하기 위하여 클라우드 전달 모델의 사용
  4. 4. WAS 에 대한 고객의 지속적인 변화 요구 WAS의 향상과 변화에 대해서 고객과 분석가들은 지속적으로 많은 요구사항을 전달  개발자의 생산성 향상  “Low-End” 애플리케이션 환경을 보다 단순화  “Low-End” 와 “High-End” WAS 환경 사이의 플랫폼 정확성(Fidelity)  미션 크리티컬 애플리케이션을 위한 보다 높은 레벨의 복원력(Resiliency)  작업 제어의 향상  엔드 유저 만족도에 대한 지속적인 향상  애플리케이션 환경에 대해 비용 절감
  5. 5. 목적 별로 적합한 WAS 의 선택 필요 =
  6. 6.  WAS infrastructure 의 현황과 시장의 트렌드  개발자 지향 WAS - IBM WebSphere Liberty Server – Liberty Server 를 통한 개발자 경험 향상  데모  Q&A
  7. 7. IBM WebSphere Application Server 의 인식 “IBM 영어 매뉴얼만 많고, 너무~ 어려워요.” “안정적이고 기능은 좋은데, 너무~ 비싸요.” “기능이 많아서 그런가, 너무~ 느려요.”
  8. 8. 개발자가 원하는 것 - 경량화된 IBM WAS Liberty Server IBM 이 제공하고자 했던 것 개발자가 원하는 건…  개발에 편리한 가볍고 빠른 WAS IBM WebSphere Liberty Server 사진 출처 : http://www.slideshare.net/stephanj/ejb-31-by-bert-ertman
  9. 9. 손쉬워진 설치  개발자와 ISV 에게는 IBM WAS Liberty Server 런 타임과 eclipse 연계 도구 모두 별도의 비용 없이 무 상으로 사용 가능함  개발 도구는 Eclipse 추가 기능으로 설치됨  50MB zip 정도의 작은 다운로드 사이즈 – Unzip 을 통한 설치나 IBM Installation Manager 를 통해 설치 가능  2 분만에 아무것도 없는 상태에서 설치 완료 가능 : 1. Eclipse 추가 기능으로 IBM WAS 개발자 도구 설치 2. 해당 도구를 이용해서 IBM WAS Liberty Server 를 다운로드 하거나 WASdev.net 에서 바로 다운로드 가능 www.wasdev.net
  10. 10. 단순화된 서버 설정 – 단 하나의 server.xml 파일로 모든 설정 관리 가능 <server> <featureManager> 서버에 설치되어 있는 번들에 대한 기능 제어 가능 <feature>jsp-2.2</feature> <feature>jdbc-4.0</feature> </featureManager> 로깅과 같이 런타임 서비스를 위하여 'singleton' 설정 가능 <logging traceSpecification=”webcontainer=all=enabled:*=info=enabled” /> <application name="tradelite" location="tradelite.war" /> 애플리케이션이나 데이터소스 정의와 같은 여러 자원에 대한 'instance' 설정 가능 <dataSource jndiName="jdbc/TradeDataSource"> <properties.derby.embedded databaseName="${server.config.dir}/tradedb"/> </dataSource> </server> 이러한 어떤 설정이라도 ‘master’ 설정에 ‘included’ 하여 분리된 별도의 xml 파일 형태로 관리 가능(팀 개발에 용이)
  11. 11. 단순화된 서버 설정 - 하나의 server.xml 파일/Eclipse 연동 WAS v8.5.5 Liberty 는 모든 설정이 하나의 server.xml 파일로 구성 가능하며 이를 통해서 공유/버전 관리가 용이(Eclipse 도구에 연동된 위자드 제공)  가장 단순한 케이스 : 모든 서버 의 설정이 하나의 XML 파일로 가능  Eclipse 도구에 연동된 설정 위 자드를 통한 손쉬운 설정  관리 콘솔이나 wsadmin 등이 더 이상 필요 없음
  12. 12. 경량화 – 빠른 시작 시간/적은 풋프린트/높은 처리량  경량화된 개발 환경에 대한 이슈를 IBM WebSphere에서 직접 해결할 수 있으며 경량화된 서버에서 완전한 운영환경 서버의 속도로 서비스 요청 처리 가능  Liberty Server 의 시작 시간 & 풋프 린트가 Tomcat과 거의 동등함  Liberty Server 는 JBoss Web Profile 시작 시간의 절반만 소요  Liberty Profile은 JBoss 에 비해서는 최대 20%, Tomcat에 비해서는 25% 이상의 높은 성능을 보여줌 Throughput Comparison of various lightweight servers Startup & Footprint Comparison of various lightweight servers 120% 120 8.0 100 93 7.0 6.0 80 5.3 5.0 60 4.0 46 3.0 2.0 34 2.3 40 1.7 20 1.0 0.0 0 Tomcat 7.0.12 JBoss 7.0 Web GlassFish 3.1 Liberty Profile Profile Web Profile Startup time Footprint 100% 100% 104 Relative Throughput (higher is better) 7.8 Footprint in MB (Lower is Better) Startup time in seconds (Lower is Better) 9.0 90% 80% 80% 83% 60% 40% 20% 0% Tomcat 7.0.12 JBoss 7.0 Web GlassFish 3.1 Liberty Profile Profile Web Profile
  13. 13. 그럼 그냥 Tomcat 하고 뭐가 다른가요?
  14. 14. 애플리케이션의 기능 집합을 동적 적용 가능 운영환경 …… EJB-Lite 3.1 jpa-2.0 CDI 1.0 blueprint-1.0 jsp-2.2 osgi-jpa-1.0 jsf-2.0 servlet-3.0 jaxrs-1.1 wab-1.0 IBM WebSphere Liberty Server  Web/Mobile 애플리케이션  OSGi 애플리케이션  Java EE 6.0 Web Profile 애플리케이션  트랜잭션이나 보안과 같이 연관된 서비스
  15. 15. Java EE Web Profile 지원(EJB 3.1 Lite 지원) Java EE Web Profile 은 경량화 Web 애플리케이션 개발에 집중하여 해당 개발을 가능하게 하는 Java EE 표준에 대하여 적합한 부분집합을 제공  Web 애플리케이션 개발을 위하여 베스트 프랙티스로써 경량화되고 표준화된 런타임을 가능하게 함 EJB 3.1 Lite  Web profile 표준 : 하단의 기능을 전부 가용하게 함 – – – – – – – – – – Servlet 3.0 JavaServer Pages (JSP) 2.2 Expression Language (EL) 2.2 Debugging Support for Other Languages (JSR-45) 1.0 Standard Tag Library for JavaServer Pages (JSTL) 1.2 JavaServer Faces (JSF) 2.0 Common Annotations for Java Platform (JSR-250) 1.1 Java Transaction API (JTA) 1.1 Java Persistence API (JPA) 2.0 Bean Validation 1.0 – Enterprise JavaBeans (EJB) 3.1 Lite + Interceptors 1.1: – Managed Beans 1.0: – Contexts and Dependency Injection: JSR-299 1.0 and JSR-330 1.0  Java EE Web Profile 표준에서 EJB 3.1 Lite 가 Key 컴포넌트임  EJB 3.1 표준에서 세션 빈과 로컬 인터페이스에 집중한 부분집합  EJB 구현을 작고 가볍게 유지 Session Beans (stateful, stateless, singleton) ✔ Message Driven Beans Full EJB 3.1 ✔ ✔ 2.x/1.x CMP/BMP Entity ✔ Java Persistence 2.0 ✔ ✔ Local/No Interface ✔ ✔ 3.0 Remote ✔ 2.x Remote Home/Component ✔ JAX-WS web services ✔ JAX-RPC web services ✔ EJB Timer Service ✔ Async Bean Invocation Interceptors ✔ ✔ RMI-IIOP interop ✔ ✔ Container managed transactions / Bean managed transactions ✔ ✔ Declarative Programmatic Security ✔ ✔ Embeddable API ✔ ✔
  16. 16. 동적인 런타임 application features apps resources application application dropins location server.xml config updates jsp-2.2 feature updates jsf-2.0 servlet-3.0 wab-1.0 app updates ssl-1.0 transaction-1.1 jndi-1.0 Liberty runtime OSGi framework JDK 6.0/7.0 monitor-1.0 sessionDatabase-1.0 jdbc-4.0 설정, 기능, 애플리케이션 업데이트는 IBM WebSphere Liberty Server 의 재시작 없이 즉시 동적 반영
  17. 17. OSGi 란 뭔가요?
  18. 18. OSGi 의 특징  OSGi 기술은 Java 에서 동적 컴포넌트를 정의한 스펙이며 보다 강화된 모듈화, 버전 관리, 동적인 플 랫폼 제공을 가능하게 합니다. Java VM rt jce jsse plugin sunjce_prov. dnsns .. marketing workeffort ebay minerva minilang guiapp accounting Begin Here Java EE의 클래스패스 구조 이슈 party assetmaint hhfacility pos. content manufact. product bi workflow ecommerce oagis … googlebase ofbiz order common catalina base datafile entity widget … rome jpos18 jcl barcode4j freemarker serializer jython naming resolver mail jenks jakarta log4j httpunit mx4j batik fop tomcat poi lucene jdom derby commons EAR 2 Module A Module C Isolation Module G Module C Class Not Found Exception Module A Module B xerces xmlapis xmlrpc xmlgraphics OSGi v4.2 Framework Java EE App Server EAR 1 axis ezmorph servlets jetty looks jdbm bsf bsh velocity ws-commons geronimo .. json wsdl4j xalan Everything isolated Sharing Everything shared
  19. 19. 동적 런타임을 위한 세부 구조
  20. 20. 동적 런타임을 위한 세부 구조
  21. 21. 동적 런타임을 위한 세부 구조
  22. 22. SPI 를 통한 IBM WebSphere Liberty Server 확장 Liberty 확장 System Programming Interface(SPI) 를 통해 전체 어플리케이션 라이프사이클을 지원하는 커스텀 기능을 추가할 수 있도록 지원합니다.  OSGi 번들을 통해 새로운 Liberty 기능을 추가할 수 있습니다. – 웹 어플리케이션 번들 또한 지원 가능.  Liberty 런타임과 개발 도구에 3rd 파티 툴을 완벽히 통합할 수 있습니다.  샘플 시나리오: – OSGi 어플리케이션 프로그래밍 모델 확장 – 새로운 인프라스트럭쳐 제공 (예: Custom User Registry)
  23. 23. 더 경량화도 가능 jaxb wsSecurity jaxws  설치 : 필요한 기능만 설치하여 디스크 풋프린트 최소화 – 모듈화된 “Archive Install” 또는 – 단일 Installation Manager 저장소 wmqJmsCli wasJmsSec jmsMdb ent urity wasJmsClie wasJmsSer nt ver collective Member cdi ejblite ldapRegist webCache ry managed Beans beanvalid localConn jaxrs osgi.jpa ation ector restConne blueprint ssl ctor appSecuri jsf wab json ty sessionDa jsp monitor tabase servlet jpa jndi jdbc Applicatio Feature HTTP n Manager Transport Manager oauth Liberty extended 30MB  시작 : Liberty 커널에 의해 설정된 기능들만 시작 됨. 메모리 풋프린트 최소화  패키지 : 필요한 기능만 패키징하여 패키징 서버 크기 최소화 server –package serverName --include=minify Liberty runtime 50MB (Java EE Web Profile)
  24. 24. 개발자를 위한 다양한 자료 및 샘플 제공 The Liberty Repository  Liberty 플랫폼 확장을 위한 온라인 저장소 제 공  포함되는 컨텐츠: – Open source project integration – Individual Liberty features – Samples On www.wasdev.net  _ ______ __________ __ _______ • 국내 전자정부 표준 프레임워크 호환성 ______ ________ __________ • ______ ________ ___ ______ _______ ___________ _________ ______ ________ http://www.egovframe.go.kr/EgovCompatibility.jsp?menu=5&submenu=3 ______ • ______ ____ ____ _______
  25. 25. 개발만이 아닌 운영이나 클라우드 관점에서 더 필요한 건 ?
  26. 26. 대규모의 IBM WebSphere Liberty Server 도 관리 가능 관리를 위하여 IBM WebSphere Liberty Server 그룹을 집단화 할 수 있는 관리 모델 제공 – – – – Agent 가 필요 없는 방식의 관리 Liberty 토폴로지 배치 애플리케이션과 서버 배치/업데이트 Java, Jython, Jconsol clients 를 통한 JMX API jython Controlle r Collective  설정 : 컨트롤러 • jconsole • • • • •  고확장성 : 1000 대 이상의 JVM 확장이 가능 운영 레지스트리 제공 컨트롤러를 통해 모든 멤버가 접근 고가용성 보안, 확장성 Agentless 중앙 집중 설정이 없음 Liberty Server Liberty (Collective Server 멤버) (Collective 멤버) • • Java • • collective 에 멤버로 합류가능 클러스터에 대한 자가 인지 단순한 설정 업데이트 쉽게 reversed, reconfigured Liberty 클러스터 B – 관리되는 서버 : - Liberty Server, WAS Base, WAS ND  고가용성 Liberty Server Liberty (Collective Server 멤버) (Collective 멤버) Liberty 클러스터 A  Liberty Collective 관리 인프라
  27. 27. IMDB 솔루션인 WXS 를 연계 활용 A App App App App  In-Memory Data Grid 솔루션을 활용해서 DB I/O 를 최소화하는 구조를 위하여 데이터를 메모리에 상주시킬 수 있기 때문에 반복적인 조회작업이 많 은 업무에 사용되는 경우 성능 극대화 가능 WAS IMDG Grid Client 업무 애플리케이션 데이터 조회/변경 1 Grid Query A App In-Memory DataGrid  In-Memory DataGrid 솔루션인 WebSphere eXtreme Scale과 연계하여 Session cluster 구축 가능 EIS P3 R1 R4 P2 R5 B A’ C D’ 5배 증가된 캐쉬! 4배 증가된 캐쉬! D C’ 캐쉬 클러스터는 애플리케이션과 같이 위치하거나 같은 단계 내에서 수행될 수 있음 Insert/Update/Delete If 데이터 Insert 발생 P0 A B’ 2 변경 데이터 동기화 DB  Grid 동기화 모듈 (실시간/시간주기/건수별) 업무 데이터 R3 Database
  28. 28. Cloud 에 대한 준비 Cloud Foundry •개발자를 위한 IBM WebSphere Liberty Server Buildpack 을 공개/자유롭게 사용 가능 •https://github.com/cloudfoundry/ibmwebsphere-liberty-buildpack Chef for OpenStack •IBM WebSphere Liberty Server 의 설치 및 관리를 위한 Chef cookbook 공개하여 손쉽게 활용 가능 •https://github.com/WASdev/ci.chef.wlp WW 개발자 커뮤니티 : http://wasdev.net 한국 WebSphere User Group : http://websphere.pe.kr
  29. 29. 요약 : 경량화된 IBM WAS Liberty Server IBM 이 제공하고자 했던 것 위주에서 탈피하여 개발자/사용자가 원하는 것을 제공하기 위한 변화 IBM WebSphere Liberty 가 제공하는 건… • 개발자들을 위한 도구와 런타임을 무료 제공 및 쉽게 다운로드 • 애플리케이션과 설정된 서버를 위한 Unzip 방식의 배치 • 애플리케이션 서버를 위한 아주 빠른 시작 • 작거나 모듈화된 런타임 환경 IBM WebSphere Liberty Server • 운영환경에 빠른 적용을 위한 단순 설정
  30. 30.  WAS infrastructure 의 현황과 시장의 트렌드  개발자 지향 WAS - IBM WebSphere Liberty Server – Liberty Server 를 통한 개발자 경험 향상  데모  Q&A
  31. 31. 데모 : 개발환경 및 커스텀 기능 구성  개발 환경 구성  Eclipse 플러그인 설치  Liberty 설치  커스텀 기능 구성  UserFeature  패키징
  32. 32. 데모 : 개발 환경 구성  이클립스를 이용한 개발 환경 구성 1. Marketpalce 를 이용하여 Liberty 개발도구 설치 2. Servers  Runtime Environment 에 Liberty 설정
  33. 33. 데모 : 커스텀 기능 구성  OSGi 를 이용한 UserFeature 개발 1. OSGi Bundle Project 생성 ( UserFeatureBudle ) 2. Liberty Feature Project 생성 ( UserFeature ) 3. 생성된 Feature Liberty 서버에 설치 ③ ② ① 상세한 UserFeature 생성 방법은 아래의 문서를 확인바랍니다. https://www.ibmdw.net/wasdev/docs/create_your_own_simple_hello_world_user_feature/
  34. 34. 데모 : 패키징  최소화 패키징을 통한 배포 용이성 1. 추가된 Custom Feature 와 함께 필요한 기능만 패키징 2. 압추파일 형태로 패키징 되며 옵션을 통해 최소화 패키징 가능 ② ① ③
  35. 35. 감사합니다.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×