배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 아이디어와 코드를 공유합니다.
https://github.com/arawn/building-modular-monoliths-using-spring
이 자료는 2019년 KSUG 세미나에서 진행한 "잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다"를 기반으로 몇가지 내용을 추가하고, 전개 방식을 다듬어 조금 더 친절하게 만들어졌습니다.
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
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 상황에서, 어떠한 방식으로 복구를 할 수 있는지 실습해보실 수 있습니다.
마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 아이디어와 코드를 공유합니다.
https://github.com/arawn/building-modular-monoliths-using-spring
이 자료는 2019년 KSUG 세미나에서 진행한 "잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다"를 기반으로 몇가지 내용을 추가하고, 전개 방식을 다듬어 조금 더 친절하게 만들어졌습니다.
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
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 상황에서, 어떠한 방식으로 복구를 할 수 있는지 실습해보실 수 있습니다.
마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 생각을 공유합니다.
https://github.com/arawn/building-modular-monoliths-using-spring
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
PAYCO 쇼핑의 아키텍처를 MSA로 변경하면서 겪은 삽질을 공유합니다.
레거시 서비스에서 서비스를 분리해내는 방법과 순서, 이후 고려해야 할 사항을 공유하고자 합니다.
목차
1. PAYCO 쇼핑?
2. 프로젝트 진행 과정
3. 아키텍처 공유
대상
- MSA, Spring cloud, Docker, Ansible 등을 실무에 적용하는 방법에 관심이 있는 분
- Spring Cloud를 써서 MSA로 개발하고 싶은데 어디서부터 손대야 할지 모르는 분
■관련 동영상: https://youtu.be/l195D5WT_tE
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
AWS SAM을 사용하게 된 계기를 설명드리고, AWS SAM template이 Cloudformation위에서 운영되기 때문에 Cloudformation에서 사용되는 주요 기능들을 설명합니다. 그리고 Infrastructure as code를 위한 Pipeline을 구축할 때 Cloudformation과 함께 사용할 수 있는 Tool들을 설명합니다. API Gateway, Lambda, SQS, SNS, DynamoDB(경우에 따라서는 VPC 설정과 함께 Elasticache와 RDS)로 구성된 비교적 단순한 시스템에 AWS SAM을 사용한 경험을 바탕으로 준비가 되었습니다. 아주 복잡한 시스템에 AWS SAM을 적용한 것이 아니기 때문에 이부분에서는 내용이 한계가 있을 수 있습니다.
어떻게 하면 배포 프로세스를 빠르게 개선할 수 있을까요?
git branch를 푸시하고 개별 테스트 서버를 만드려면 어떻게 해야 할까요?
쿠버네티스와 GitOps, Argo CD를 이용한 배포 방법을 소개 합니다.
Open Infrastructure & Cloud Native Days Korea 2019 발표자료
원본 슬라이드 다운로드 - http://bit.ly/subicura-gitops
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/il8wpd7gxe8
CI/CD 기술을 통해 팀은 민첩성을 높이고 고품질 제품을 신속하게 출시 할 수 있습니다. 이 강의에서는 컨테이너화 된 응용 프로그램을 관리 할 수 있도록 CI/CD 워크 플로우 작성을위한 모범 사례를 안내합니다. AWS Cloud Development Kit를 사용하여 코드 애플리케이션 모델로 인프라를 다루고 AWS CodePipeline 및 AWS CodeBuild를 사용하여 CI/CD 릴리스 파이프 라인을 설정하는 방법을 보여줍니다. 마지막으로 AWS CodeDeploy를 사용한 안전한 배포 자동화에 대해 설명합니다.
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...Amazon Web Services Korea
AWS re:Invent에서 소개된 개발에서 운영까지 이어지는 파이프라인 전체에 대한 최신 기술을 통해, 사일로를 분리하고 협업을 향상하는 방법을 소개합니다. 거버넌스 제어를 위한 AWS Control Tower, 코드 수준에서의 위험성 사전 탐지를 위한 Amazon CodeGuru Reviewer, 더 빠르고 풍부한 기능의 앱 제작을 위한 AWS Amplify Studio, IaC를 위한 AWS Cloud Development Kit, 그리고 운영 효율성을 향상 시키는 Amazon CloudWatch의 신규 기능을 알아봅니다.
By event storming, we can derive so many meaningful objects such as Entity, Domain Events, and Services that can be mapped with implementation objects in Spring cloud.
마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 생각을 공유합니다.
https://github.com/arawn/building-modular-monoliths-using-spring
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
PAYCO 쇼핑의 아키텍처를 MSA로 변경하면서 겪은 삽질을 공유합니다.
레거시 서비스에서 서비스를 분리해내는 방법과 순서, 이후 고려해야 할 사항을 공유하고자 합니다.
목차
1. PAYCO 쇼핑?
2. 프로젝트 진행 과정
3. 아키텍처 공유
대상
- MSA, Spring cloud, Docker, Ansible 등을 실무에 적용하는 방법에 관심이 있는 분
- Spring Cloud를 써서 MSA로 개발하고 싶은데 어디서부터 손대야 할지 모르는 분
■관련 동영상: https://youtu.be/l195D5WT_tE
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
AWS SAM을 사용하게 된 계기를 설명드리고, AWS SAM template이 Cloudformation위에서 운영되기 때문에 Cloudformation에서 사용되는 주요 기능들을 설명합니다. 그리고 Infrastructure as code를 위한 Pipeline을 구축할 때 Cloudformation과 함께 사용할 수 있는 Tool들을 설명합니다. API Gateway, Lambda, SQS, SNS, DynamoDB(경우에 따라서는 VPC 설정과 함께 Elasticache와 RDS)로 구성된 비교적 단순한 시스템에 AWS SAM을 사용한 경험을 바탕으로 준비가 되었습니다. 아주 복잡한 시스템에 AWS SAM을 적용한 것이 아니기 때문에 이부분에서는 내용이 한계가 있을 수 있습니다.
어떻게 하면 배포 프로세스를 빠르게 개선할 수 있을까요?
git branch를 푸시하고 개별 테스트 서버를 만드려면 어떻게 해야 할까요?
쿠버네티스와 GitOps, Argo CD를 이용한 배포 방법을 소개 합니다.
Open Infrastructure & Cloud Native Days Korea 2019 발표자료
원본 슬라이드 다운로드 - http://bit.ly/subicura-gitops
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/il8wpd7gxe8
CI/CD 기술을 통해 팀은 민첩성을 높이고 고품질 제품을 신속하게 출시 할 수 있습니다. 이 강의에서는 컨테이너화 된 응용 프로그램을 관리 할 수 있도록 CI/CD 워크 플로우 작성을위한 모범 사례를 안내합니다. AWS Cloud Development Kit를 사용하여 코드 애플리케이션 모델로 인프라를 다루고 AWS CodePipeline 및 AWS CodeBuild를 사용하여 CI/CD 릴리스 파이프 라인을 설정하는 방법을 보여줍니다. 마지막으로 AWS CodeDeploy를 사용한 안전한 배포 자동화에 대해 설명합니다.
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...Amazon Web Services Korea
AWS re:Invent에서 소개된 개발에서 운영까지 이어지는 파이프라인 전체에 대한 최신 기술을 통해, 사일로를 분리하고 협업을 향상하는 방법을 소개합니다. 거버넌스 제어를 위한 AWS Control Tower, 코드 수준에서의 위험성 사전 탐지를 위한 Amazon CodeGuru Reviewer, 더 빠르고 풍부한 기능의 앱 제작을 위한 AWS Amplify Studio, IaC를 위한 AWS Cloud Development Kit, 그리고 운영 효율성을 향상 시키는 Amazon CloudWatch의 신규 기능을 알아봅니다.
By event storming, we can derive so many meaningful objects such as Entity, Domain Events, and Services that can be mapped with implementation objects in Spring cloud.
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...Amazon Web Services Korea
AWS의 빅데이터 서비스들이 데이터 파이프라인 상에서 어떻게 활용 되는지와 데이터 모델링과 플랫폼 구축을 100% 내재화 하여 AWS와 함께 고객기반 서비스의 경쟁력을 강화 해나가는 고객 사례를 전해 드립니다. 국내 뷰티산업을 리딩 하고 있는 아모레퍼시픽에서 온/오프라인 고객 정보를 AWS 기반의 Data Lake로 통합 하고 고객 관점의 데이터 서비스를 출시 하는데 속도를 높이고 있는 성공 스토리를 직접 전해 드립니다.
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On...Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/uC1Eb20ZjGs
거의 모든 산업 분야의 기업은 전례없는 속도의 변화를 경험하고 있으며, 작고 빠른 기업이 몇달 만에 시장을 앞서나가기도 합니다. 하지만 전통적인 모놀리틱 애플리케이션 환경에서는 시장 변화에 민첩하게 대응하거나 실험을 자주 시도하는 것이 어려웠습니다. 컨테이너와 서버리스 기술, MSA, CI/CD의 특징을 가진 모던 어플리케이션 개발은 여러분이 빠르게 혁신할 수 있도록 도와드릴 수 있습니다. 이 세션에서는 실제 비즈니스 케이스를 위해 AWS에 구현한 다양한 모던 어플리케이션 디자인 패턴들을 사례와 함께 소개합니다.
마이크로서비스는 큰 애플리케이션을 독립된 API와 데이터스토어를 가진 작은 단위의 서비스로 느슨하게 결합하여, 서비스를 책임지는 자율성 높은 팀의 자동화된 배포 및 운영 관리를 통해 민첩하게 비지니스 요구를 반영하는 아키텍처 구성 방식입니다. AWS 콘테이너(Container) 서비스 및 서버리스(Serverless) 아키텍처를 이용하여 마이크로 서비스를 구현하는 방법과 이를 위한 모범 사례를 소개합니다. 1) 개별 서비스 확장, 2) API 운영 및
Detailed Information: AWS 콘테이너(Container) 서비스 및 서버리스(Serverless) 아키텍처를 이용하여 마이크로 서비스를 구현하는 방법과 이를 위한 모범 사례를 소개합니다. 1) 개별 서비스 확장, 2) API 운영 및 관리, 3) 일관된 트랙잭션 유지, 4) 서비스 자동 배포, 5) 서비스 모니터링, 6) 서비스 보안 및 인증 그리고 7) 서비스 생태계 구성 등의 다양한 이슈에 AWS를 통한 해결 방법을 알아봅니다. 특히, AWS re:Invent에서 새로 출시한 AWS Step Functions, ECS 관리를 위한 Blox, Lambda@Edge 등의 서비스와 기능을 통해 마이크로서비스를 운영 관리하는 방법을 안내해 드립니다.
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
본 장표는 인프콘 2022 / 코틀린 멀티플랫폼, 미지와의 조우 세션에 대한 강연 자료입니다.
코틀린은 멀티플랫폼을 지원하는 언어로 Server-side와 Android뿐만이 아니라 JavaScript 엔진이 있는 브라우저나 Node.js도 지원하며, Native 등 다양한 플랫폼에서 쓸 수 있습니다. 이를 이용해 코틀린 코드를 공유하는 단일 코드베이스로 모바일부터 웹과 데스크톱, 서버에 이르기까지 다중 플랫폼 애플리케이션을 작성할 수 있습니다.
본 핸즈온 세션을 통해 코틀린 멀티플랫폼과 함께 리액트, 스프링부트로 웹 애플리케이션의 프론트엔드부터 백엔드까지 직접 개발하며 친해져 보는 시간을 가져보세요. 참가자는 코틀린 멀티플랫폼 프로젝트를 이해하고, 더 나아가 프론트엔드와 백엔드 간의 공유 로직 작성, Kotlin/JS 기반 리액트 및 스프링 웹 프로그래밍을 경험할 수 있습니다.
https://github.com/arawn/building-fullstack-webapp-with-kotlin-multiplatform
https://infcon.day/speaker/박용권-김지헌-코틀린-멀티플랫폼/
코틀린이 제공하는 직렬화 라이브러리인 kotlinx.serialization를 소개하고, 왜 만들었는지 그리고 어떤 특징을 가지고 있는지 공유합니다.
슬라이드 내 예제 코드는 github 에 공개되어 있습니다.
https://github.com/arawn/kotlinx-serialization-overview
자프링(자바 + 스프링) 외길 12년차 서버 개발자가 코프링(코틀린 + 스프링)을 만난 후 코틀린의 특징과 스프링의 코틀린 지원을 알아가며 코프링 월드에서 살아남은 이야기…
코드 저장소: https://github.com/arawn/kotlin-support-in-spring
Reactive Web - Servlet & Async, Non-blocking I/OArawn Park
자바 서블릿(Java Servlet) 기술을 기반으로
리액티브 웹(REACTIVE WEB) 구현 과정을 공유!
1부, Servlet & Async, Non-blocking I/O
2부, Reactive Programing (작성 중)
3부, Spring Reactive Web (작성 중)
Spring Framework 4.0과 4.1의 주요 업데이트 내용을 정리했습니다. 그리고, Spring I/O 2015 | The conference 에서 공개된 4.2의 소식들을 모아보았습니다. :)
ps. 제가 웬만하면 자료는 한글로 바꾸는 편인데... 이번에는 시간이 너무 부족해서 대부분 영어를 그대로 사용했네요. 다음에 기회가 되면 한글화시키는걸로...
스트림 API는 람다 표현식을 적극적으로 활용해서 만들어진 자바의 새로운 API 입니다.
스트림 API를 통해서 자바에서도 맵/리듀스 방식으로 대량의 데이터를 순차 또는 병렬 처리를 할 수 있게 되었는데요, 이번 발표를 통해 스트림 API가 무엇인지- 어떻게 써먹는지에 대해 가볍게 씹고 뜯고 맛보고 즐기셨으면 좋겠습니다. :)
예제코드 : https://github.com/arawn/jdk8-stream-api
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
제 13회 한국 자바 개발자 컨퍼런스 커뮤니티 세션에서 공유한 `Spring Framework 3.2 > 4.0 — Themes and Trends` 의 발표 자료
Spring Framework 3.1에 공개된 후 약 1년만에 Spring Framework 3.2개 공개되었습니다.
3.2에는 비동기 요청 처리와 향상된 JAVA 7 지원, Spring MVC Test framework 합류 등으로 자바 엔터프라이즈 애플리케이션을 개발하는데 있어 편리함과 함께 세련미를 더해주고 있습니다.
최근 Spring Framework 핵심 개발자인 Juergen Hoeller는 springsource blog에 "NEXT STOP: SPRING FRAMEWORK 4.0"라는 제목으로 앞으로 Spring Framework에 어떤 변화들이 찾아올지에 대해서 미리 귀뜸을 해주었습니다.
이 시간을 통해 Spring Framework 3.2의 새로운 기능들과 개선사항을 살펴보고, Spring Framework의 미래 모습에 대해 이야기를 나눠보는 자리를 만들고자 합니다.
제 14회 한국 자바 개발자 컨퍼런스의 커뮤니티 세션에서 공유한 `overview of spring4` 의 발표 자료
스프링 프레임워크는 2004년에 출시된 이후 지금까지 많은 변화를 겪어왔습니다. 기억에 남아 있는 굴직한 변화를 더듬어 보면 버전 2.0은 XML 네임스페이스와 AspectJ 지원, 버전 2.5부터 애노테이션을 활용한 프로그래밍 기능이 추가되었습니다. 그리고 버전 3.0으로 올라가며 Java 5+ 기반으로 코드 구조가 바뀌고 자바 코드 기반 설정 기능이 추가되었습니다. 2013년 12월 13일에 버전 4.0 발표이 발표되었습니다. 주목할 변화는 바로 Java 8 지원과 제거 대상(@Deprecated)으로 선언되었던 많은 클래스와 메소드들이 삭제되었다는 것입니다. 이 외에도 많은 변화가 있습니다. 이번 시간에는 조금 높은 곳에서 내려다보는 느낌으로 무엇이 추가되었고, 어떤게 바뀌었는지 살펴보려고 합니다.
예제코드 : https://github.com/arawn/overview-of-spring4
Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
[Spring Camp 2013] Java Configuration 없인 못살아!Arawn Park
Spring Camp 2013 / Track B Session 2
Java Configuration은 Spring 3.0과 함께 등장했습니다. 초기에는 '이게 뭐야?' 싶은 정도로 제대로된 모습을 갖춘 상태가 아니었습니다. 뒤돌아보면 스프링 1.0 시절의 XML을 보는것 같았지요. (웃음)
하지만 3.1이 발표되며 상황이 바뀌었습니다. XML 설정을 대체할 정도로 성장했을 뿐만 아니라 더 많은 것들을 할 수 있게 되었거든요.
이 시간에는 Spring을 사용하는 대표적인 예제 PetClinic(https://github.com/arawn/spring-petclinic)을 Java Configuration으로 재구성한 모습을 코드로 보여드립니다. 그리고 제가 보는 Java Configuration의 매력요소를 공유합니다.
제10회 개발자를 위한 ‘共感(공감)’ 세미나 - Session 5 Vagrant와 Chef로 개발서버 구축 자동화하기의 장표입니다.
규모가 있는 자바 웹 프로젝트는 대부분 개발, 테스트, 이관, 운영 등 n개의 서버로 배포/관리가 된다.
테스트, 이관, 운영과 같은 서버는 별도의 서버가 마련되어 구축되지만 개발서버는 일반적으로 개발자 자신의 PC에 구축해서 진행하는 경우가 많다. 이러다보니 개발자별로 조금씩 미묘하게 다른 서버 환경이 자신의 PC에서는 잘 되는 기능이 다른 서버에 배포되면 구동되지 않는 경우도 많고, 프로젝트에 참여하는 개발자들이 개발서버를 구축하기 위해서 들이는 비용도 만만치 많이 들어간다.
Vagrant와 Chef라는 도구를 사용하면 개발자들이 자신의 PC에 개발서버를 구축하고 관리하는데 들어가는 비용을 획기적으로 줄일 수 있다.
예제에 보여준 동영상 : http://youtu.be/W28iX5WFRXU
예제에 사용된 소스 : https://gist.github.com/4366784
21. LOGISTICS
ADAPTER
✔ 새로운 기능을 추가하기 위해 기존 코드를 수정해야 함
✔ 모듈간 상호 참조 등으로 순환 의존성이 생기는 등에 부작용
✔ 즉, 모듈간 강결합으로 단일 모듈에 경계가 무너지는 현상
DeliveryService
----------------------
+createInvoice(Order)
PurchaseService
----------------------
+createOrder(Order)
WarehousingManagement
-------------------------
+process(OrderComplated)
InventoryService
----------------------
+adjustStock(Order)
36. ✔ 최소 1회 이상 메시지 전달 보장, 최대 14일 유지
✔ 무제한 확장 가능, 빠른 읽기 처리량
✔ 메시지 풀링 방식, 단일 소비자(경쟁 소비자)
✔ 메시지 순서를 보장하지 않음
✔ 최대 256KB 데이터 전달
✔ AWS SDK 기반 쉬운 API 제공
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
37. 1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 발행/구독 모델 지원(1:1, 1:n)
✔ 무제한 확장 가능
✔ 소비자 유형별 메시지 전달 보장
✔ 메시지 전달 보장을 위해 SQS 사용 권장
✔ 그외 소비자 유형에 대해서는 보장 못함
✔ AWS SDK 기반 쉬운 API 제공
38. 1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 메시지 전달 및 순서를 보장
✔ 이벤트 스트리밍 지원(중복 이벤트 제어 필요)
✔ 샤드(Shard) 개념을 통해 무제한 확장 가능
✔ 자동화된 확장이 아닌, 수동 제어
✔ 3개 리전에 복제, 최대 7시간 동안 데이터 유지
✔ 초당 5회 읽기 제한(샤드 당)
✔ 최대 1MB 데이터 전달
39. 1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 메시지 전달 및 순서를 보장
✔ 점대점, 발행/구독 방식 메시지 기능 지원
✔ 인스턴스 기반 확장 가능
✔ 높은 가용성 및 메시지 안정성
✔ 업계 표준 API 및 프로토콜 호환
✔ AMQP, MQTT, OpenWire, STOMP 지원
✔ JMS(Java Message Service) 지원