본 장표는 인프콘 2022 / 코틀린 멀티플랫폼, 미지와의 조우 세션에 대한 강연 자료입니다.
코틀린은 멀티플랫폼을 지원하는 언어로 Server-side와 Android뿐만이 아니라 JavaScript 엔진이 있는 브라우저나 Node.js도 지원하며, Native 등 다양한 플랫폼에서 쓸 수 있습니다. 이를 이용해 코틀린 코드를 공유하는 단일 코드베이스로 모바일부터 웹과 데스크톱, 서버에 이르기까지 다중 플랫폼 애플리케이션을 작성할 수 있습니다.
본 핸즈온 세션을 통해 코틀린 멀티플랫폼과 함께 리액트, 스프링부트로 웹 애플리케이션의 프론트엔드부터 백엔드까지 직접 개발하며 친해져 보는 시간을 가져보세요. 참가자는 코틀린 멀티플랫폼 프로젝트를 이해하고, 더 나아가 프론트엔드와 백엔드 간의 공유 로직 작성, Kotlin/JS 기반 리액트 및 스프링 웹 프로그래밍을 경험할 수 있습니다.
https://github.com/arawn/building-fullstack-webapp-with-kotlin-multiplatform
https://infcon.day/speaker/박용권-김지헌-코틀린-멀티플랫폼/
Kubernetes currently has two load balancing mode: userspace and IPTables. They both have limitation on scalability and performance. We introduced IPVS as third kube-proxy mode which scales kubernetes load balancer to support 50,000 services. Beyond that, control plane needs to be optimized in order to deploy 50,000 services. We will introduce alternative solutions and our prototypes with detailed performance data.
This is the slide deck from the popular "Introduction to Node.js" webinar with AMD and DevelopIntelligence, presented by Joshua McNeese. Watch our AMD Developer Central YouTube channel for the replay at https://www.youtube.com/user/AMDDevCentral.
An introduction to REST and RESTful web services.
You can take the course below to learn about REST & RESTful web services.
https://www.udemy.com/building-php-restful-web-services/
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
As presented at CJUG. Recording will be up here: http://www.meetup.com/ChicagoJUG/events/231837105/
As soon as an application becomes even moderately complex, CQRS and an Event Sourced architecture start making a lot of sense. The talk is focused on: - the challenges and tactics of separating the write model from the query model in a complex domain - how commands naturally lead to events and to an event based system, and - how events get projected into useful, eventually consistent views. Event Sourcing is one of those things that you really need to push through at the beginning (much like TDD) and that - once understood and internalized, will change the way you architect a system. This talk introduces you to the basic concepts and problem spaces to solve.
본 장표는 인프콘 2022 / 코틀린 멀티플랫폼, 미지와의 조우 세션에 대한 강연 자료입니다.
코틀린은 멀티플랫폼을 지원하는 언어로 Server-side와 Android뿐만이 아니라 JavaScript 엔진이 있는 브라우저나 Node.js도 지원하며, Native 등 다양한 플랫폼에서 쓸 수 있습니다. 이를 이용해 코틀린 코드를 공유하는 단일 코드베이스로 모바일부터 웹과 데스크톱, 서버에 이르기까지 다중 플랫폼 애플리케이션을 작성할 수 있습니다.
본 핸즈온 세션을 통해 코틀린 멀티플랫폼과 함께 리액트, 스프링부트로 웹 애플리케이션의 프론트엔드부터 백엔드까지 직접 개발하며 친해져 보는 시간을 가져보세요. 참가자는 코틀린 멀티플랫폼 프로젝트를 이해하고, 더 나아가 프론트엔드와 백엔드 간의 공유 로직 작성, Kotlin/JS 기반 리액트 및 스프링 웹 프로그래밍을 경험할 수 있습니다.
https://github.com/arawn/building-fullstack-webapp-with-kotlin-multiplatform
https://infcon.day/speaker/박용권-김지헌-코틀린-멀티플랫폼/
Kubernetes currently has two load balancing mode: userspace and IPTables. They both have limitation on scalability and performance. We introduced IPVS as third kube-proxy mode which scales kubernetes load balancer to support 50,000 services. Beyond that, control plane needs to be optimized in order to deploy 50,000 services. We will introduce alternative solutions and our prototypes with detailed performance data.
This is the slide deck from the popular "Introduction to Node.js" webinar with AMD and DevelopIntelligence, presented by Joshua McNeese. Watch our AMD Developer Central YouTube channel for the replay at https://www.youtube.com/user/AMDDevCentral.
An introduction to REST and RESTful web services.
You can take the course below to learn about REST & RESTful web services.
https://www.udemy.com/building-php-restful-web-services/
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
As presented at CJUG. Recording will be up here: http://www.meetup.com/ChicagoJUG/events/231837105/
As soon as an application becomes even moderately complex, CQRS and an Event Sourced architecture start making a lot of sense. The talk is focused on: - the challenges and tactics of separating the write model from the query model in a complex domain - how commands naturally lead to events and to an event based system, and - how events get projected into useful, eventually consistent views. Event Sourcing is one of those things that you really need to push through at the beginning (much like TDD) and that - once understood and internalized, will change the way you architect a system. This talk introduces you to the basic concepts and problem spaces to solve.
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
This lightning talk will show you how simple it is to apply CI to the creation of Docker images, ensuring that each time the source is changed, a new image is created, tagged, and published. I will then show how easy it is to then deploy containers from this image and run tests to verify the behaviour.
Writing the Container Network Interface(CNI) plugin in golangHungWei Chiu
An introduction to Container Network Interface (CNI), including what problems it want solve and how it works.
Also contains a example about how to write a simple CNI plugin with golang
source : http://www.opennaru.com/redhat/jboss/
세계 최고의 오픈소스 미들웨어 JBoss EAP
JBoss EAP ( JBoss® Enterprise Application Platform )는 클라우드와 컨테이너를 포함한 모든 IT 환경에서 엔터프라이즈급의 보안, 성능, 확장성을 제공합니다.
Java EE 표준을 지원하는 세계에서 가장 많이 사용되는 오픈 소스 웹 어플리케이션 서버 입니다.
오픈 소스 소프트웨어이기 때문에 도입 비용이 저렴할 뿐만 아니라, 레드햇의 높은 기술력으로 기업용 미들웨어에 적합한 품질과 기술지원을 제공합니다.
라이선스 형태는 GNU Lesser General Public License (LGPL) 한가지 이지만, 배포 버전은 커뮤니티 버전(WIldfly)와 엔터프라이즈 버전(JBoss EAP) 두가지 입니다.
엔터프라이즈 버전인 JBoss EAP는 레드햇과 유료 서브스크립션 계약을 맺음으로써 사전에 인증된 JBoss 소프트웨어 최신 패치 파일과 업그레이드을 할 수있습니다.
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
This is a presentation I prepared for a local meetup. The audience is a mix of web designers and developers who have a wide range of development experience.
In KDD2011, Vijay Narayanan (Yahoo!) and Milind Bhandarkar (Greenplum Labs, EMC) conducted a tutorial on "Modeling with Hadoop". This is the first half of the tutorial.
NestJS (https://nestjs.com/) is a Node.js framework for building server-side applications. This slide give you a brief introduction of Nest, and shows the examples like Service, Middleware, and Pipe, etc.
OpenStack Designate is a DNS as a Service (DNSaaS) solution that is part of the OpenStack cloud computing platform. It provides a scalable, reliable, and highly available DNS infrastructure for cloud-based applications and services.
Designate enables users to manage their domain names and DNS records through a RESTful API or a web-based dashboard. It supports various record types, including A, AAAA, CNAME, MX, NS, PTR, SRV, and TXT. Users can also create and manage zones, which are collections of DNS records that define a domain name's authoritative name servers.
Designate integrates with other OpenStack services such as Keystone, Nova, Neutron, and Horizon. It also supports integration with external DNS providers, allowing users to easily switch between providers or use multiple providers for redundancy.
Designate is designed to be highly scalable and fault-tolerant. It uses a distributed architecture that allows it to handle millions of DNS queries per second and ensures high availability even in the event of node failures.
Overall, OpenStack Designate provides a flexible and powerful DNSaaS solution that simplifies the management of domain names and DNS records in cloud-based environments.
React is a different way to write JavaScript apps. When it was introduced at JSConf US in May, the audience was shocked by some of its design principles. One sarcastic tweet from an audience member ended up describing React’s philosophy quite accurately: https://twitter.com/cowboy/status/339858717451362304
We’re trying to push the limits of what’s possible on the web with React. My talk will start with a brief introduction to the framework, and then dive into three controversial topics: Throwing out the notion of templates and building views with JavaScript, “re-rendering” your entire application when your data changes, and a lightweight implementation of the DOM and events.
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
This lightning talk will show you how simple it is to apply CI to the creation of Docker images, ensuring that each time the source is changed, a new image is created, tagged, and published. I will then show how easy it is to then deploy containers from this image and run tests to verify the behaviour.
Writing the Container Network Interface(CNI) plugin in golangHungWei Chiu
An introduction to Container Network Interface (CNI), including what problems it want solve and how it works.
Also contains a example about how to write a simple CNI plugin with golang
source : http://www.opennaru.com/redhat/jboss/
세계 최고의 오픈소스 미들웨어 JBoss EAP
JBoss EAP ( JBoss® Enterprise Application Platform )는 클라우드와 컨테이너를 포함한 모든 IT 환경에서 엔터프라이즈급의 보안, 성능, 확장성을 제공합니다.
Java EE 표준을 지원하는 세계에서 가장 많이 사용되는 오픈 소스 웹 어플리케이션 서버 입니다.
오픈 소스 소프트웨어이기 때문에 도입 비용이 저렴할 뿐만 아니라, 레드햇의 높은 기술력으로 기업용 미들웨어에 적합한 품질과 기술지원을 제공합니다.
라이선스 형태는 GNU Lesser General Public License (LGPL) 한가지 이지만, 배포 버전은 커뮤니티 버전(WIldfly)와 엔터프라이즈 버전(JBoss EAP) 두가지 입니다.
엔터프라이즈 버전인 JBoss EAP는 레드햇과 유료 서브스크립션 계약을 맺음으로써 사전에 인증된 JBoss 소프트웨어 최신 패치 파일과 업그레이드을 할 수있습니다.
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
This is a presentation I prepared for a local meetup. The audience is a mix of web designers and developers who have a wide range of development experience.
In KDD2011, Vijay Narayanan (Yahoo!) and Milind Bhandarkar (Greenplum Labs, EMC) conducted a tutorial on "Modeling with Hadoop". This is the first half of the tutorial.
NestJS (https://nestjs.com/) is a Node.js framework for building server-side applications. This slide give you a brief introduction of Nest, and shows the examples like Service, Middleware, and Pipe, etc.
OpenStack Designate is a DNS as a Service (DNSaaS) solution that is part of the OpenStack cloud computing platform. It provides a scalable, reliable, and highly available DNS infrastructure for cloud-based applications and services.
Designate enables users to manage their domain names and DNS records through a RESTful API or a web-based dashboard. It supports various record types, including A, AAAA, CNAME, MX, NS, PTR, SRV, and TXT. Users can also create and manage zones, which are collections of DNS records that define a domain name's authoritative name servers.
Designate integrates with other OpenStack services such as Keystone, Nova, Neutron, and Horizon. It also supports integration with external DNS providers, allowing users to easily switch between providers or use multiple providers for redundancy.
Designate is designed to be highly scalable and fault-tolerant. It uses a distributed architecture that allows it to handle millions of DNS queries per second and ensures high availability even in the event of node failures.
Overall, OpenStack Designate provides a flexible and powerful DNSaaS solution that simplifies the management of domain names and DNS records in cloud-based environments.
React is a different way to write JavaScript apps. When it was introduced at JSConf US in May, the audience was shocked by some of its design principles. One sarcastic tweet from an audience member ended up describing React’s philosophy quite accurately: https://twitter.com/cowboy/status/339858717451362304
We’re trying to push the limits of what’s possible on the web with React. My talk will start with a brief introduction to the framework, and then dive into three controversial topics: Throwing out the notion of templates and building views with JavaScript, “re-rendering” your entire application when your data changes, and a lightweight implementation of the DOM and events.
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
대부분의 중소 모바일 게임 업체는 앱을 잘 만들기에도 시간이 모자라 출시일을 잘 맞추기 급급한 상황이다. 그러다 보니 운영을 위한 툴은 소홀히 개발하는 경우가 대부분이고 운영 캠페인은 날림으로 개발하거나 그때 그때 개발자가 필요한 부분만 개발하기 일쑤다. 그러다보니 마케터는 결국 늘 개발자 눈치만 살피게 된다. 필자는 블루윈드에서 이러한 문제를 절감했고 '모바일 게임 개발사가 앱 개발에만 집중할 수 있게 해주고 싶다'는 IGAworks의 철학에 공감하여 라이브 오퍼레이션 프로젝트를 시작하게 되었다.
라이브 오퍼레이션의 개발 중점과제는 5가지였다. 첫번째, 다수의 개발사가 하나의 큰 클라우드 시스템을 사용하도록 multi-tenant 인프라를 구축해야 한다. 두번째, TCO(Total cost of ownership)를 최소화해야 한다. 세번째, 앱의 핵심유저를 실시간으로 그룹화하여 타게팅 캠페인을 할 수 있어야 한다. 네번째, 캠페인의 성과를 마케터에게 실시간으로 피드백해야 한다. 다섯째, 3개월 안에 정식 서비스가 되어야 한다는 점이었다. (왜 우리에게 주어지는 시간은 늘 3개월인가) 그리고 당연하지만 이 서비스를 혼자 개발해야 했다.
이 다섯가지 이슈를 해결하기 위하여 AWS 클라우드 상에 생산성과 성능이 검증된 node.js 와 mongodb를 이용하여 서비스 백엔드를 구성하였고, multi-tenant를 구성하기 위한 여러가지 고민과 그 해결책을 직접 구현하였다. 필자는 node.js와 mongodb를 사용해 본 경험이 충분하다 생각했지만 대규모 정식 서비스를 진행하며 많은 함정에 빠졌고 결국 해결했다.
이 발표를 통해 청강자는 node.js와 mongodb를 이용하여 multi-tenant 인프라를 구축해야 할 때 고려해야 할 설계 방식과 기술적인 고민, 그것에 대한 현실적인 해법을 얻을 수 있다.
어느 해커쏜에 참여한 백엔드 개발자들을 위한 교육자료
쉽게 만든다고 했는데도, 많이 어려웠나봅니다.
제 욕심이 과했던 것 같아요. 담번엔 좀 더 쉽게 !
- 독자 : 백엔드 개발자를 희망하는 사람 (취준생, 이직 희망자), 5년차 이하
- 주요 내용 : 백엔드 개발을 할 때 일어나는 일들(개발팀의 일)
- 비상업적 목적으로 인용은 가능합니다. (출처 명기 필수)
Pivotal은 개발자 생산성을 높이고 운영비용을 줄이면서 성공적인 비지니스를 할 수 있도록 개발 환경의 혁신 문화와 플랫폼을 제공하고 있습니다.
본 세션에서는 플랫폼의 구조와 효과에 대해 소개하며 기업이 진정한 기술선도 업체로 발전해 갈 수 있도록 혁신적은 플랫폼 *PAS, *PKS를 소개합니다.
*PAS: Pivotal Application Service로 개발자에게 기능 구현 속도를 높이고, 운영 팀은 세계 최고 수준의 가용성을 제공해주는 서비스입니다.
*PKS: Pivotal Container Service로 Kubernates의 배포, 관리, 모니터링, 업데이트 등을 자동화하고 Pivotal에서 관리해주는 서비스입니다
Similar to 야, 너두 짤수있어 - IaC Basic(210131 김성익) (20)
4. "10+ Deploys Per Day: Dev & Ops Cooperation at Flickr”
(https://www.youtube.com/watch?v=LdOe18KhtT4&ab_channel=O%27Reilly)
개발(develop)과 운영(operation)의 분리로 소통비용이 발생하는 것을 막기 위하여,
개발팀과 운영팀을 긴밀하게 묶고, 통합/자동화/측정/공유하는 문화를 만드는
개발 방법론
0. 앞서서
5. “1. 라우터, 스위치, 케이블 등의 네트워크,
2. 데이터 센터, 서버 컴퓨터 등의 하드웨어,
3. OS, 웹서버, 미들웨어 등의 소프트웨어를 일컫는다”
Red Hat
IT Infrastructure란?
0. 앞서서
8. 인프라스트럭쳐를 다루는 기존의 방식
from 테라폼 도입기 클라우드 인프라스트럭처 코드로 재정의하기 - 김대권
1. Server Scripting
스크립트 자동 실행
2. Configuration Management
서버 상태 관리
3. Resourcement Management
리소스 정의
-> python manage.py collectstatic
python manage.py migrate
sudo service uwsgi restart
sudo service nginx restart
1. IaC란?
10. 배포날…
• 아무리 열심히 기능개발을 해도, 배포
날만 되면 깨지는 서버
• 배포날 퇴근 시간은 없다.
• 열심히 관리해놓아도, 업데이트 한번
했다가 의존성 깨지면 롤백하느라 한
세월
• 업데이트는 절대 하지 않는다
2. 왜 IaC인가
11. 인프라 관리 메뉴얼을 만들라고?
• 열심히 PPT에 그림 갖다붙이며 관리
메뉴얼 만들어놓고 인수인계, 공유했
는데…
• 콘솔 화면을 업데이트했네..?
• 누가 버튼을 잘못눌러서 뭘 바꿔놨는데, 뭘 바꿔
놨는지도 모르겠네..?
2. 왜 IaC인가
12. 2. 왜 IaC인가
• 과거의 On Premiss 환경에서는 IaC가 옵션
• 하드웨어를 이용해 다룰 수 있었음
• 서버를 관리하는 전문 관리자의 수도 많았음
• 그러나, 클라우드 환경에서 IaC는 필수
• 하드웨어가 없어 모든 것을 소프트웨어로 다루어야함
• 소프트웨어를 코드로 배포하는 방법에 익숙해져야만 함
16. 1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• 기존의 템플릿형
• AWS CloudFormation, MS Azure Resource Manager, Google Cloud
Deployment Manager
• YAML, JSON 등을 통해 infra를 템플릿으로 저장하여 구성 가능
• 각자 자기 플랫폼만 지원 내가 다 해먹고싶다!
3. IaC 툴 비교하기
17. 1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• Terraform
• 업계 골목대장
• 멀티 provider 플랫폼 지원(국내에는 네이버도 있음)
• HCL(Hashicorp Configuration Language)라는 전용 DSL(Domain Specific
Language) 지원
• plan, apply 명령어로 immutable한 infra state 정의
3. IaC 툴 비교하기
19. 1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• AWS CDK
• AWS CloudFormation을 기반으로 만든 AWS의 프로비져닝 툴
• YAML, JSON 대신 TS, Python, .Net, JAVA 지원
• AWS 플랫폼 종속적
3. IaC 툴 비교하기
20. 1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• Pulumi
• 멀티 provider 지원
• Terraform에 비해 이용자가 적지만, 점점 주목받고 있는 툴
• Python, Go, JS/TS 등 다양한 언어를 지원해서, 비교적
낮은 러닝커브로 개발자들이 인프라 구성을 시도할 수 있음
• Terraform 처럼 immutable state 지원
3. IaC 툴 비교하기
21. 2. Configuration Management Tool
서버 환경 구성
• 생성(provisioning)된 서버 시스템 위에서 사용됨
• 여러 개의 서버 사이의 환경을 구축하고, 소프트웨어를 설치/업데이트하기위해
사용
• 다수의 서버와 다양한 환경(OS 등)을 지원
3. IaC 툴 비교하기
22. • Ansible
• CM tool의 업계 1위
• Red Hat에서 인수하여 관리중
• python으로 구현됨
• YAML 사용
3. IaC 툴 비교하기
2. Configuration Management Tool
서버 환경 구성
23. • CM tool과 다르게, 한 대의 machine 내부에서 동작함
• Container형과, VM형이 있음 -> DevOps 직군의 단골면접질문!
• 서버 상태를 코드로 남기고, 이를 Image로 템플릿화
• 결국, OS 등의 machine 환경에 구애받지 않고 완전히 동일하게 app 동작 가능
• ubuntu에서는 됐는데, CentOS에서는 안되네.. <- 이런 경우를 차단
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
24. • Docker
• 컨테이너계의 표준(최근에 CRI 문제로 k8s가 docker를 deprecating한다고 하긴 했지만..)
• 스크립트로 구성된 Docker File을 이용해 Machine Image를 생성
• 생성된 이미지를 토대로 컨테이너를 돌림
• Orchestration Tool로 Docker Swarm이 있지만, 업계 표준은 Kubernetes라
k8s와 더 많이 사용됨
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
26. • Packer
• Terraform을 만든 Hashicorp 사의 제품
• Machine Image를 생성하는 역할만 수행
• Docker Script를 배울 필요 없이, JSON만으로 이미지를 구성할 수 있다는
점이 좋음
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
27. • Vagrant
• Virtual Machine 프로비져닝 자동화 툴
• Vagrant file를 작성하여
VM Box의 세부 설정 가능
• Container형의 우세로 최근에는 사용빈도 하락
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리