한국 표준(?) 자바셋(Java 1.6+Spring 3.x+MyBatis)과 Monolithic 아키텍처를 사용하고 있었던 제 조직 내에서 기술적 변화를 이끌어가는 것에 관련된 내용입니다.
변화를 유도하기 위해서 어떻게 해야 하는지가 핵심이며,
Architecture, Frontend, Backend, 방법론/프로세스의 영역을 각각의 단계로 나누어서 Phase1을 수행한 것과 Phase2를 수행 중인 내용에 대해서도 다룹니다.
Phase1
- Architecture : Frontend / Backend 명시적 분리
- Frontend : Angular.js, Grunt, Bower 도입
- Backend : Java 1.7/Spring4, ORM 도입
- 방법론/프로세스 : Scrum, Git
Phase2
- Architecture : Micro-Service Architecture(MSA)
- Frontend : Content Router, E2E Test
- Backend : Polyglot, Multi-Framework
- 방법론/프로세스 : Scrum+JIRA, Git Branch Policy, Pair Programming, Code Workshop
Aurora MySQL Backtrack을 이용한 빠른 복구 방법 - 진교선 :: AWS Database Modernization Day 온라인Amazon Web Services Korea
발표영상 다시보기: https://kr-resources.awscloud.com/data-databases-and-analytics/aurora-mysql-backtrack%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B9%A0%EB%A5%B8-%EB%B3%B5%EA%B5%AC-%EB%B0%A9%EB%B2%95-%EC%A7%84%EA%B5%90%EC%84%A0-aws-database-modernization-day-%EC%98%A8%EB%9D%BC%EC%9D%B8-2
Aurora MySQL은 기존 MySQL의 운영에 추가한 많은 기능들을 제공해 드리고 있습니다. 이 중 복구에 관련된 기능인 Aurora MySQL PITR과 Backtrack에 대한 소개를 드리고자 합니다. 두 기능을 통해 운영 중 일어날 수 있는 rollback 상황에서, 어떠한 방식으로 복구를 할 수 있는지 실습해보실 수 있습니다.
2022년 11월 30일 코엑스에서 개최한 베스트콘2022(Better Software Testing Conference 2022)에서 발표한 강연 자료입니다.
대규모 장애를 막기 위해 소프트웨어/품질 엔지니어가 알아야 할 내결함성의 개념과 설계 기법을 공유드립니다.
생생한 강연 영상으로 확인해 보세요!
https://youtu.be/OLsv7oG0VPo
한국 표준(?) 자바셋(Java 1.6+Spring 3.x+MyBatis)과 Monolithic 아키텍처를 사용하고 있었던 제 조직 내에서 기술적 변화를 이끌어가는 것에 관련된 내용입니다.
변화를 유도하기 위해서 어떻게 해야 하는지가 핵심이며,
Architecture, Frontend, Backend, 방법론/프로세스의 영역을 각각의 단계로 나누어서 Phase1을 수행한 것과 Phase2를 수행 중인 내용에 대해서도 다룹니다.
Phase1
- Architecture : Frontend / Backend 명시적 분리
- Frontend : Angular.js, Grunt, Bower 도입
- Backend : Java 1.7/Spring4, ORM 도입
- 방법론/프로세스 : Scrum, Git
Phase2
- Architecture : Micro-Service Architecture(MSA)
- Frontend : Content Router, E2E Test
- Backend : Polyglot, Multi-Framework
- 방법론/프로세스 : Scrum+JIRA, Git Branch Policy, Pair Programming, Code Workshop
Aurora MySQL Backtrack을 이용한 빠른 복구 방법 - 진교선 :: AWS Database Modernization Day 온라인Amazon Web Services Korea
발표영상 다시보기: https://kr-resources.awscloud.com/data-databases-and-analytics/aurora-mysql-backtrack%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B9%A0%EB%A5%B8-%EB%B3%B5%EA%B5%AC-%EB%B0%A9%EB%B2%95-%EC%A7%84%EA%B5%90%EC%84%A0-aws-database-modernization-day-%EC%98%A8%EB%9D%BC%EC%9D%B8-2
Aurora MySQL은 기존 MySQL의 운영에 추가한 많은 기능들을 제공해 드리고 있습니다. 이 중 복구에 관련된 기능인 Aurora MySQL PITR과 Backtrack에 대한 소개를 드리고자 합니다. 두 기능을 통해 운영 중 일어날 수 있는 rollback 상황에서, 어떠한 방식으로 복구를 할 수 있는지 실습해보실 수 있습니다.
2022년 11월 30일 코엑스에서 개최한 베스트콘2022(Better Software Testing Conference 2022)에서 발표한 강연 자료입니다.
대규모 장애를 막기 위해 소프트웨어/품질 엔지니어가 알아야 할 내결함성의 개념과 설계 기법을 공유드립니다.
생생한 강연 영상으로 확인해 보세요!
https://youtu.be/OLsv7oG0VPo
3. 데이터와 비즈니스가 끊임없이 변하기 때문이다.
- Amit Sela, Apache Beam Committer
Why? Real-time? Stream?
https://twitter.com/gwenshap/status/740208148263403520
https://twitter.com/ConfluentInc/status/725110136562393088
http://conferences.oreilly.com/strata/big-data-conference-ca-2015/public/schedule/detail/42390
데이터는 실시간으로 태어나기 때문에,
실시간으로 처리되어야 한다.
- Mike Spicer, IBM
실시간은 Big 또는 Fast에 관한 것이 아니라, Big 그리고 Fast에 관한 것이다.
한 번 실시간 빅데이터를 경험한 사람은 계속 더 빠른 빅데이터를 원한다.
-Anil Gadre, MapR
5. 실시간(Real-time) 처리
응답시간 빠른거?
근데 얼마나 빨라야?
마감 시간(Deadline) 준수
1초 이내?300ms 이내?
https://www.soasta.com/blog/23-stats-mobile-web-performance-monitoring/
https://en.wikipedia.org/wiki/Real-time_computing
한 3초 넘으면 준 실시간(Near Real-time)?
Hard
Firm
Soft
6. 빨라? 느려?
Stream 처리 ⇔ Batch 처리
Unbounded Bounded
Data Data
X X
끊임없이 한 번
https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101
https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
8. 앞으로는 ASAP 같은 “실시간으로”라고 요청하지 말고,
대략적이더라도 목표 응답 시간을 말해 주세요.
목표 응답 시간의 기준은
고객을 잃기 전까지
입니다.
실시간 처리: 데이터 처리 목표
스트림 처리: 데이터 처리 방식
http://bigdatapage.com/4-really-real-meanings-of-real-time/
10. 사용하는 분? 절반이 손듦
좋아하는 분? 절반이 손듦
https://twitter.com/jaykreps/status/568499167686995969
https://twitter.com/miguno/status/568503505113247744
Storm vs. Spark Streaming
좋아하는 분? ...
사용하는 분? 손 하나만 남음
14. 모두 카프카를 사용하기 때문에,
같은 데이터로 쉽게 비교할 수 있다.
Apache Kafka
Oracle DB are your vital organs,
Apache Kafka circulates information to the rest of the body
https://twitter.com/gwenshap/status/715660577926852608
https://twitter.com/gwenshap/status/760579304048631808
Good thing they all use Kafka,
so you can compare them easily on the same data :)
오라클DB는 당신의 생명에 중요 장기이고,
아파치 카프카는 몸 전체에 정보를 순환시킨다.
15. 대용량 데이터 처리
분산 처리 (커단란 건 나눠서)
장애 발생은 일상 무시 (아몰랑! 안중요해)
재작업 성공할 때까지 다시
앞에꺼 취소하고 다시
16. 전송 보장 방식
분산 환경에서 장애로 인해 부분 전송 성공 가능성
At-most-once(최대 한 번): 장애 무시 ⇨ 유실
At-least-once(적어도 한 번): 재시도 ⇨ 중복
Exactly-once(딱 한 번): 유실/중복 없음 ⇨ 어려움
17. 분산 시스템에는 두 가지 어려운 문제가 있다.
2. Exactly-once 전송
1. 메시지의 순서 보장
2. Exactly-once 전송
https://twitter.com/mathiasverraes/status/632260618599403520
Exactly-once 보장
There are only two hard problems in distributed systems:
2. Exactly-once delivery
1. Guaranteed order of messages
2. Exactly-once delivery
19. Exactly-once 보장
재작업 성공할 때까지 다시
앞에꺼 취소하고 다시
Idempotent exactly-once
: 몇 번을 실행해도 한 번 실행한 결과와 같음(멱등성)
= 덮어 써도 무방
= 중복 가능한 At-least-once ⇨ Exactly-once
Transactional exactly-once
: 트랜잭션을 지원한다면 실패시 roll-back 가능
트랜잭션을 지원하는 DB 쓰기에 적합
22. 스트림 처리는 프레임웍이 아니라 디자인 패턴
https://www.oreilly.com/ideas/questioning-the-lambda-architecture
Lambda Architecture
http://lambda-architecture.net/
Kappa Architecture
http://kappa-architecture.com/
결과적으로 기술 부채
25. 데이터 수신, 처리, 저장 단계 중
어느 한 부분이라도 Exactly-once를 보장하지 않으면,
전체는 Exactly-once를 보장하지 않는다.
데이터 원천부터 비즈니스 행동(의사 결정)까지
목표 응답 시간 내에 반응해야만 할 때,
실시간 시스템 구축은 기술 경쟁력을 갖는다.
데이터 파이프라인 중에 배치 처리 구간이 있으면,
아무리 빠르고 정확한 스트림 처리를 구현해도 의미가 퇴색된다.
26. 스트림 처리 기술은 빠르게 발전하고 있어
오늘 내용은 1년 이내에 옛날 방식이 됩니다.
따라서 지속적으로 기술 동향을 파악하고,
실제 개발하고 운영해 보아야
비로소 실력이 쌓입니다.