ݺߣ

ݺߣShare a Scribd company logo
Why Pivotal Cloud Foundry is
the BEST Platform for Spring
김민석 & 신혜원
Senior Platform Architect
Iteration Driven Innovation을 위한 Key Questions
DevOps
Cloud Native
App
Org
/Process
Iteration
Driven
Innovation
코딩 시간 어떻게 늘리지?
언제든 배포하기?
운영은 누가하지?
팀 Balance 어떻게?
소통의 방식은?
방법론은?
왜 Cloud Native?
마이크로 서비스?
어떻게 시작하지?
Cloud Native = PROCESS + TECHNOLOGY
Cloud Native Platform의 요건
APPLICATION
Scaling통합로그
수집
SSO
연동
자동복구
성능 및
분산모니
터링
네트워킹
로드밸런싱
Infrastructure Agnostic
and Utilization
플랫폼 보안
데이터보안
Data Services
연동 자동화
자동화된
CI/CD
플랫폼
고가용성
성능 및
분산모니
터링
데이터보안
Apps Manager
Apps Manager
Apps Manager
Cloud Native Platform의 요건
APPLICATION
Scaling통합로그
수집
SSO
연동
자동복구
성능 및
분산모니
터링
네트워킹
로드밸런싱
Infrastructure Agnostic
and Utilization
플랫폼 보안
데이터보안
Data Services
연동 자동화
자동화된
CI/CD
플랫폼
고가용성
성능 및
분산모니
터링
데이터보안
SPRING을 위한 최적화된 플랫폼
Scaling통합로그
수집
SSO
연동
자동복구
성능 및
분산모니
터링
네트워킹
로드밸런싱
Infrastructure Agnostic
and Utilization
플랫폼 보안
데이터보안
Data Services
연동 자동화
자동화된
CI/CD
플랫폼
고가용성
성능 및
분산모니
터링
데이터보안
■ 기반 마이크로서비스(Spring Cloud Services)
■ 마이크로서비스 분산추적(Trace Explorer)
■ 애플리케이션 상태 모니터링(Spring Actuator)
■ 모니터링 시스템 연동(Metrics Forwarder Service)
■ Demo
Spring Cloud Netflix Components
Ribbon Archaius
Eureka
FeignHystrix
Turbine
Zuul
ClientServer
Netflix Service Discovery - Eureka
http://techblog.netflix.com/2012/09/eureka.html
마이크로서비스를 위한 기반 서비스를 플랫폼에서 관리형
으로 제공
Service Registry for PCF
NetflixOSS Eureka Service Discovery 패턴의 구현을 서비스로 제공
Netflix Circuit Breaker - Hystrix
https://medium.com/netflix-techblog/introducing-hystrix-for-resilience-engineering-13531c1ab362
마이크로서비스를 위한 기반 서비스를 플랫폼에서 관리형
으로 제공
Circuit Breaker Dashboard for PCF
마이크로서비스나 애플리케이션 내부의 회로 차단기 상태 및 메트릭 데이터스트림을
시각화
Netflix Externalize Configuration – Archaius
https://medium.com/netflix-techblog/announcing-archaius-dynamic-properties-in-the-cloud-bc8c51faf675
마이크로서비스를 위한 기반 서비스를 플랫폼에서 관리형
으로 제공
Config Server for PCF
애플리케이션의 외부 프로퍼티를 중앙에서 관리하는 동적 중앙 설정 서비스 제공
hello-server-dev hello-server-stage hello-server-prod
refresh w/ curl
application.yml
• hello-server-dev.yml
• hello-server-stage.yml
• hello-server-prod.yml
플랫폼에서 관리형으로 제공될 때의 장점은?
With PCFWithout PCF
Config Server Service Registry
(Eureka)
Circuit Breaker
(Hystrix)
개발자가 배포 및 보안 관리 플랫폼이 배포 및 보안 관리
Config Server Service Registry
(Eureka)
Circuit Breaker
(Hystrix)
■ 기반 마이크로서비스(Spring Cloud Services)
■ 마이크로서비스 분산추적(Trace Explorer)
■ 애플리케이션 상태 모니터링(Spring Actuator)
■ 모니터링 시스템 연동(Metrics Forwarder Service)
■ Demo
마이크로서비스의 분산추적
Spring Boot
App
Spring Boot
App
PCF Metrics
Trace Explorer
GoRouter
Spring Boot
App
Spring Boot
App
X-B3-SpaceId
X-B3-TraceId
X-B3-TraceId
통합 모니터링 및 로그수집
Trace Explorer
■ 기반 마이크로서비스(Spring Cloud Services)
■ 마이크로서비스 분산추적(Trace Explorer)
■ 애플리케이션 상태 모니터링(Spring Actuator)
■ 모니터링 시스템 연동(Metrics Forwarder Service)
■ Demo
Spring Boot Actuator
management.endpoint.health.show-details=when_authorized
when authorized
http://IP:PORT/actuator/health
Spring Boot Actuator
• auditevents
• beans
• conditions
• Configprops
• env
• health
• httptrace
• flyway
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html
• info
• loggers
• liquibase
• metrics
• mappings
• scheduledtasks
• sessions
• shutdown
• threaddump
• heapdump
• jolokia
• logfile
• prometheus
Spring boot기반 앱의 모니터링과 관리를 위한 라이브러리
Spring Boot Actuator 1.x Spring Boot Actuator 2.x
•Spring MVC •Spring MVC
•Spring WebFlux
•Jersey
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Spring Actuator Support in Apps Manager
/heapdump
/heapdump
■ 기반 마이크로서비스(Spring Cloud Services)
■ 마이크로서비스 분산추적(Trace Explorer)
■ 애플리케이션 상태 모니터링(Spring Actuator)
■ 모니터링 시스템 연동(Metrics Forwarder Service)
■ Demo
Netflix Realtime Monitoring – Atlas / Servo / Spectator
Spring Boot Actuator 메트릭을 수집하기
(spring boot 2 .x)
• Netflix Atlas
• Prometheus
• CloudWatch
• Datadog
• Graphite
• Ganglia
• JMX
• Influx/Telegraf
• New Relic
• StatsD
• SignalFx
• Wavefront
Spring Boot
Actuator
Metrics Writer
Java
Monitoring server
micrometer.io
메트릭 시각화 대시보드(PCF metrics)
custom metric을 연계하기
@Autowired
SampleMetricCounter sampleMetricCounter;
@GetMapping(value="/")
String test(){
sampleMetricCounter.count();
return "hello";
}
@Component
public class SampleMetricCounter {
private final Counter counter;
public SampleMetricCounter(MeterRegistry registry) {
this.counter = registry.counter("my.http.counter");
}
public void count() {
this.counter.increment();
}
}
Metrics Forwarder Service for PCF
Metrics Forwarder Service for PCF
cf bind-service myapp mf
cf create-service metric-forwarder unlimited mf
THEN
PCF metrics
Demo
With PCFCloud Native Reference Architecture
PRIVATE CLOUD PUBLIC CLOUD
CLOUD ORCHESTRATION
& AUTOMATION
LANGUAGES
Java
.NET
Python
CONTAINER
ORCHESTRATION
CONTAINERS MESSAGING
DATA MICROSERVICES CIRCUIT BREAKERS
Hystrix
DIY
LOAD BALANCING
Ribbon
Zuul
DATABASES AND DATA
MANAGEMENT
DISCOVERY &
REGISTRATION
Consul
Eureka
etcd
VERSION CONTROL
DEV FRAMEWORKS
Buildpacks
API MANAGEMENT
SECURITY &
COMPLIANCE
SSO
IPSEC
METRICS &
DASHBOARDS
PCF Metrics
PCF Logging
BOSH
Docker RunC
Ruby
Go
*.JS
CI / CD
NETWORKING
MONITORING / LOGGING
Azure
MySQL Gemfire
Redis RabbitMQ
Gitlab
Jenkins Artifactory
Spring Cloud
Dataflow
RabbitMQ
PCF Elastic Runtime
HA Proxy Router
Service Broker
Service Nodes
Service
Service Broker
Service Nodes
Service
Ops Manager UI
Ops Manager Director
Operations Manager
Others
Thank you
감사합니다

More Related Content

Spring Project와 최신 Pivotal Cloud Foundry 업데이트

  • 1. Why Pivotal Cloud Foundry is the BEST Platform for Spring 김민석 & 신혜원 Senior Platform Architect
  • 2. Iteration Driven Innovation을 위한 Key Questions DevOps Cloud Native App Org /Process Iteration Driven Innovation 코딩 시간 어떻게 늘리지? 언제든 배포하기? 운영은 누가하지? 팀 Balance 어떻게? 소통의 방식은? 방법론은? 왜 Cloud Native? 마이크로 서비스? 어떻게 시작하지?
  • 3. Cloud Native = PROCESS + TECHNOLOGY
  • 4. Cloud Native Platform의 요건 APPLICATION Scaling통합로그 수집 SSO 연동 자동복구 성능 및 분산모니 터링 네트워킹 로드밸런싱 Infrastructure Agnostic and Utilization 플랫폼 보안 데이터보안 Data Services 연동 자동화 자동화된 CI/CD 플랫폼 고가용성 성능 및 분산모니 터링 데이터보안
  • 8. Cloud Native Platform의 요건 APPLICATION Scaling통합로그 수집 SSO 연동 자동복구 성능 및 분산모니 터링 네트워킹 로드밸런싱 Infrastructure Agnostic and Utilization 플랫폼 보안 데이터보안 Data Services 연동 자동화 자동화된 CI/CD 플랫폼 고가용성 성능 및 분산모니 터링 데이터보안
  • 9. SPRING을 위한 최적화된 플랫폼 Scaling통합로그 수집 SSO 연동 자동복구 성능 및 분산모니 터링 네트워킹 로드밸런싱 Infrastructure Agnostic and Utilization 플랫폼 보안 데이터보안 Data Services 연동 자동화 자동화된 CI/CD 플랫폼 고가용성 성능 및 분산모니 터링 데이터보안
  • 10. ■ 기반 마이크로서비스(Spring Cloud Services) ■ 마이크로서비스 분산추적(Trace Explorer) ■ 애플리케이션 상태 모니터링(Spring Actuator) ■ 모니터링 시스템 연동(Metrics Forwarder Service) ■ Demo
  • 11. Spring Cloud Netflix Components Ribbon Archaius Eureka FeignHystrix Turbine Zuul ClientServer
  • 12. Netflix Service Discovery - Eureka http://techblog.netflix.com/2012/09/eureka.html
  • 13. 마이크로서비스를 위한 기반 서비스를 플랫폼에서 관리형 으로 제공 Service Registry for PCF NetflixOSS Eureka Service Discovery 패턴의 구현을 서비스로 제공
  • 14. Netflix Circuit Breaker - Hystrix https://medium.com/netflix-techblog/introducing-hystrix-for-resilience-engineering-13531c1ab362
  • 15. 마이크로서비스를 위한 기반 서비스를 플랫폼에서 관리형 으로 제공 Circuit Breaker Dashboard for PCF 마이크로서비스나 애플리케이션 내부의 회로 차단기 상태 및 메트릭 데이터스트림을 시각화
  • 16. Netflix Externalize Configuration – Archaius https://medium.com/netflix-techblog/announcing-archaius-dynamic-properties-in-the-cloud-bc8c51faf675
  • 17. 마이크로서비스를 위한 기반 서비스를 플랫폼에서 관리형 으로 제공 Config Server for PCF 애플리케이션의 외부 프로퍼티를 중앙에서 관리하는 동적 중앙 설정 서비스 제공 hello-server-dev hello-server-stage hello-server-prod refresh w/ curl application.yml • hello-server-dev.yml • hello-server-stage.yml • hello-server-prod.yml
  • 18. 플랫폼에서 관리형으로 제공될 때의 장점은? With PCFWithout PCF Config Server Service Registry (Eureka) Circuit Breaker (Hystrix) 개발자가 배포 및 보안 관리 플랫폼이 배포 및 보안 관리 Config Server Service Registry (Eureka) Circuit Breaker (Hystrix)
  • 19. ■ 기반 마이크로서비스(Spring Cloud Services) ■ 마이크로서비스 분산추적(Trace Explorer) ■ 애플리케이션 상태 모니터링(Spring Actuator) ■ 모니터링 시스템 연동(Metrics Forwarder Service) ■ Demo
  • 20. 마이크로서비스의 분산추적 Spring Boot App Spring Boot App PCF Metrics Trace Explorer GoRouter Spring Boot App Spring Boot App X-B3-SpaceId X-B3-TraceId X-B3-TraceId
  • 21. 통합 모니터링 및 로그수집
  • 23. ■ 기반 마이크로서비스(Spring Cloud Services) ■ 마이크로서비스 분산추적(Trace Explorer) ■ 애플리케이션 상태 모니터링(Spring Actuator) ■ 모니터링 시스템 연동(Metrics Forwarder Service) ■ Demo
  • 25. Spring Boot Actuator • auditevents • beans • conditions • Configprops • env • health • httptrace • flyway https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html • info • loggers • liquibase • metrics • mappings • scheduledtasks • sessions • shutdown • threaddump • heapdump • jolokia • logfile • prometheus
  • 26. Spring boot기반 앱의 모니터링과 관리를 위한 라이브러리 Spring Boot Actuator 1.x Spring Boot Actuator 2.x •Spring MVC •Spring MVC •Spring WebFlux •Jersey <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
  • 27. Spring Actuator Support in Apps Manager
  • 30. ■ 기반 마이크로서비스(Spring Cloud Services) ■ 마이크로서비스 분산추적(Trace Explorer) ■ 애플리케이션 상태 모니터링(Spring Actuator) ■ 모니터링 시스템 연동(Metrics Forwarder Service) ■ Demo
  • 31. Netflix Realtime Monitoring – Atlas / Servo / Spectator
  • 32. Spring Boot Actuator 메트릭을 수집하기 (spring boot 2 .x) • Netflix Atlas • Prometheus • CloudWatch • Datadog • Graphite • Ganglia • JMX • Influx/Telegraf • New Relic • StatsD • SignalFx • Wavefront Spring Boot Actuator Metrics Writer Java Monitoring server micrometer.io
  • 34. custom metric을 연계하기 @Autowired SampleMetricCounter sampleMetricCounter; @GetMapping(value="/") String test(){ sampleMetricCounter.count(); return "hello"; } @Component public class SampleMetricCounter { private final Counter counter; public SampleMetricCounter(MeterRegistry registry) { this.counter = registry.counter("my.http.counter"); } public void count() { this.counter.increment(); } }
  • 36. Metrics Forwarder Service for PCF cf bind-service myapp mf cf create-service metric-forwarder unlimited mf THEN
  • 38. Demo
  • 39. With PCFCloud Native Reference Architecture PRIVATE CLOUD PUBLIC CLOUD CLOUD ORCHESTRATION & AUTOMATION LANGUAGES Java .NET Python CONTAINER ORCHESTRATION CONTAINERS MESSAGING DATA MICROSERVICES CIRCUIT BREAKERS Hystrix DIY LOAD BALANCING Ribbon Zuul DATABASES AND DATA MANAGEMENT DISCOVERY & REGISTRATION Consul Eureka etcd VERSION CONTROL DEV FRAMEWORKS Buildpacks API MANAGEMENT SECURITY & COMPLIANCE SSO IPSEC METRICS & DASHBOARDS PCF Metrics PCF Logging BOSH Docker RunC Ruby Go *.JS CI / CD NETWORKING MONITORING / LOGGING Azure MySQL Gemfire Redis RabbitMQ Gitlab Jenkins Artifactory Spring Cloud Dataflow RabbitMQ PCF Elastic Runtime HA Proxy Router Service Broker Service Nodes Service Service Broker Service Nodes Service Ops Manager UI Ops Manager Director Operations Manager Others

Editor's Notes

  1. DevOps를 받쳐줄 도구가 필요함.
  2. Diving into Spring Cloud Netflix, for example, we see here some of the Netflix OSS projects for which Spring Cloud provides integrations. Ribbon, the Netflix client-side load balancer, and Eureka, the Netflix discovery server, can be used together as we saw earlier where the client side load balancer loads routing information from the discovery server and applies its own load balancing rules. Netflix Hystrix is an implementation of a circuit breaker. With Spring annotations, we can use AOP to add fallback commands to methods. We can also automatically report failures and metrics ass streams, in accordance with 12-factor app principles, and Netflix Turbine can collect these streams and provide an aggregated visualization into the state of all circuit breakers in the system. ------------------------------ Auxiliary notes: Ribbon: A client load balancer. Ribbon loads routing info from Eureka. It has several implementations of load balancing rules. Ribbon is used internally by Feign Feign: A declarative REST client. Allows annotation of interface to be mapped to endpoints. When combined with Ribbon it adds load balancing capabilities to the client interface Hystrix: Circuit breaker patter implementation. Via spring annotations add commands to methods using AOP. Protects clients from failures and reports metrics via a stream of HTTP events Zuul: A set of HTTP filters do add routing, security. On spring its used to create a CORS filter for UI apps to be able to access external services Archaius: Dynamic configuration management. Used with Spring’s config server to allow dynamic properties loading Eureka: Discovery server Turbine: Event aggregation engine. It can combine several streams (hystrix) into one combined view, that can be view later on a dashboard
  3. 기반 마이크로서비스(Spring Cloud Services) 마이크로서비스 분산추적(Trace Explorer) 애플리케이션 상태 모니터링(Spring Actuator) 모니터링 시스템 연동(Metrics Forwarder Service) Demo