Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim오픈 소스 Actor Framework 인 Akka.NET 을 통해 온라인 게임 서버를 어떻게 구현할 수 있는지를 설명합니다. Actor Model 에 대한 기본 이해부터 Scale-out 가능한 게임 서버 구축까지 전반적인 내용에 대해 알 수 있습니다. 설명을 위해 클라이언트는 Unity3D 를 사용할 예정입니다.
Akka-intro-training-public.pdfBernardDeffargesThe document provides an introduction to Akka, a Scala-based framework for building concurrent and distributed applications using the actor model. It covers various aspects of Akka, including actor hierarchies, message delivery, fault tolerance, and the benefits of using Akka clusters for developing reactive systems. Key ideas include the importance of immutability in message passing and the use of a gossip protocol for cluster management.
게임서버프로그래밍 #1 - IOCPSeungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
GraalVMNexThoughts TechnologiesGraalVM is an ecosystem and runtime that provides performance advantages to JVM languages like Java, Scala, Groovy, and Kotlin as well as other languages. It includes a just-in-time compiler called Graal that improves efficiency, polyglot APIs for combining languages, and SDK for embedding languages and creating native images. Installation can be done with the JDK which includes Graal starting with JDK 9, or by directly downloading GraalVM from Oracle's website.
Kafka at Peak PerformanceTodd PalinoThe document discusses the performance and operational aspects of Kafka at LinkedIn, detailing the scale and architecture of their Kafka deployment, which includes over 1,800 brokers and processes trillions of messages daily. It covers various topics such as hardware selection, cluster monitoring, performance problem triaging, and administrative improvements for managing Kafka effectively. The conclusion emphasizes collaboration between operations and development to ensure optimal performance and reliability of the Kafka ecosystem.
Online game server on Akka.NET (NDC2016)Esun KimThis document discusses the development of an online game server using Akka.NET, emphasizing its benefits for real-time game interactions and state management. It covers the author's previous experience, the rationale for choosing Akka.NET, and the implementation details for a tic-tac-toe game server. The document also addresses potential challenges and the need for extensibility in server architecture.
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub LeeNDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
Scalability, Availability & Stability PatternsJonas BonérThis document provides an overview of patterns for scalability, availability, and stability in distributed systems. It discusses general recommendations like immutability and referential transparency. It covers scalability trade-offs around performance vs scalability, latency vs throughput, and availability vs consistency. It then describes various patterns for scalability including managing state through partitioning, caching, sharding databases, and using distributed caching. It also covers patterns for managing behavior through event-driven architecture, compute grids, load balancing, and parallel computing. Availability patterns like fail-over, replication, and fault tolerance are discussed. The document provides examples of popular technologies that implement many of these patterns.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
Tomcatx performance-tuningVladimir KhokhryakovThe document provides an overview of performance tuning Apache Tomcat, including adjusting logging configuration to reduce duplicate logs, understanding how TCP and HTTP protocols impact performance, choosing an optimal connector (BIO, NIO, or APR) based on the application workload, and configuring connectors to optimize throughput and request processing.
『함수형 반응형 프로그래밍』 맛보기복연 이스티븐 블랙히스, 앤서니 존스 지음 | 오현석 옮김 | 한빛미디어
함수형 반응형 프로그래밍에 관한 최초의 종합 안내서
프로그램은 ‘어떻게’가 아니라 ‘무엇’을 기술하는 선언적인 문서여야 한다는 주장을 받아들이는 사람이 점점 늘고 있다. 이런 흐름은 함수형 언어의 부흥으로 이어졌다. 함수형 언어로는 프로그램을 더 선언적인 방식으로 작성할 수 있고, 이를 이벤트 처리에 결합한 것이 함수형 반응형 프로그래밍(FRP)이다. 지난 수십 년 동안 이벤트 처리 인프라를 책임진 관찰자 패턴은, 한편으로는 버그의 온상이 되기도 했다. FRP는 관찰자 패턴의 잠재적 버그 원인을 근본적으로 차단하여 더 복잡한 시스템으로 쉽게 확장할 수 있도록 해준다.
이 책의 저자는 FRP 프레임워크인 소듐(Sodium)의 창시자로서, FRP의 기초부터 기존 프로젝트를 점진적으로 FRP 시스템으로 탈바꿈시키는 방법까지 친절히 안내한다.
게임서버프로그래밍 #1 - IOCPSeungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
GraalVMNexThoughts TechnologiesGraalVM is an ecosystem and runtime that provides performance advantages to JVM languages like Java, Scala, Groovy, and Kotlin as well as other languages. It includes a just-in-time compiler called Graal that improves efficiency, polyglot APIs for combining languages, and SDK for embedding languages and creating native images. Installation can be done with the JDK which includes Graal starting with JDK 9, or by directly downloading GraalVM from Oracle's website.
Kafka at Peak PerformanceTodd PalinoThe document discusses the performance and operational aspects of Kafka at LinkedIn, detailing the scale and architecture of their Kafka deployment, which includes over 1,800 brokers and processes trillions of messages daily. It covers various topics such as hardware selection, cluster monitoring, performance problem triaging, and administrative improvements for managing Kafka effectively. The conclusion emphasizes collaboration between operations and development to ensure optimal performance and reliability of the Kafka ecosystem.
Online game server on Akka.NET (NDC2016)Esun KimThis document discusses the development of an online game server using Akka.NET, emphasizing its benefits for real-time game interactions and state management. It covers the author's previous experience, the rationale for choosing Akka.NET, and the implementation details for a tic-tac-toe game server. The document also addresses potential challenges and the need for extensibility in server architecture.
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub LeeNDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
Scalability, Availability & Stability PatternsJonas BonérThis document provides an overview of patterns for scalability, availability, and stability in distributed systems. It discusses general recommendations like immutability and referential transparency. It covers scalability trade-offs around performance vs scalability, latency vs throughput, and availability vs consistency. It then describes various patterns for scalability including managing state through partitioning, caching, sharding databases, and using distributed caching. It also covers patterns for managing behavior through event-driven architecture, compute grids, load balancing, and parallel computing. Availability patterns like fail-over, replication, and fault tolerance are discussed. The document provides examples of popular technologies that implement many of these patterns.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
Tomcatx performance-tuningVladimir KhokhryakovThe document provides an overview of performance tuning Apache Tomcat, including adjusting logging configuration to reduce duplicate logs, understanding how TCP and HTTP protocols impact performance, choosing an optimal connector (BIO, NIO, or APR) based on the application workload, and configuring connectors to optimize throughput and request processing.
『함수형 반응형 프로그래밍』 맛보기복연 이스티븐 블랙히스, 앤서니 존스 지음 | 오현석 옮김 | 한빛미디어
함수형 반응형 프로그래밍에 관한 최초의 종합 안내서
프로그램은 ‘어떻게’가 아니라 ‘무엇’을 기술하는 선언적인 문서여야 한다는 주장을 받아들이는 사람이 점점 늘고 있다. 이런 흐름은 함수형 언어의 부흥으로 이어졌다. 함수형 언어로는 프로그램을 더 선언적인 방식으로 작성할 수 있고, 이를 이벤트 처리에 결합한 것이 함수형 반응형 프로그래밍(FRP)이다. 지난 수십 년 동안 이벤트 처리 인프라를 책임진 관찰자 패턴은, 한편으로는 버그의 온상이 되기도 했다. FRP는 관찰자 패턴의 잠재적 버그 원인을 근본적으로 차단하여 더 복잡한 시스템으로 쉽게 확장할 수 있도록 해준다.
이 책의 저자는 FRP 프레임워크인 소듐(Sodium)의 창시자로서, FRP의 기초부터 기존 프로젝트를 점진적으로 FRP 시스템으로 탈바꿈시키는 방법까지 친절히 안내한다.
An Actor Model in GoWeaveworksThe document discusses the actor model for concurrent computation in Go, emphasizing its advantages for highly concurrent systems and ease of understanding. It provides code examples for implementing actors and actions, along with comparisons to other models like CSP. The author reflects on their experience using this model in production over two years while noting some limitations and deviations from traditional actor theory.
Cascadia.js: Don't Cross the StreamsmattpodwysockiRxJS is a library for composing asynchronous and event-based programs by using observable sequences. It provides operators that allow transforming, filtering, and combining streams of data from diverse sources. Key features include:
- Representing asynchronous data streams with Observables
- Providing LINQ-like operators for querying and transforming streams
- Using Schedulers to control concurrency and synchronize streams with other asynchronous operations like user interactions, server requests, etc.
Functional Reactive Programming with RxJSstefanmayer13The document discusses functional reactive programming (FRP) in JavaScript, detailing its concepts, advantages, and practical applications. It covers functional programming principles, reactive programming fundamentals, and how to create and utilize observables in different scenarios like autocomplete and drag-and-drop. Additionally, it mentions popular libraries like RxJS and educational resources for learning FRP.
RxJS and Reactive Programming - Modern Web UI - May 2015Ben LeshThe document discusses the use of RxJS and reactive programming in frontend development, emphasizing the importance of observables for managing asynchronous data and event handling. It highlights the benefits of using observables for stream processing, such as reduced memory allocation and improved efficiency, especially in scenarios involving web sockets. Additionally, it provides insights into data flow management and the role of observables in controlling side effects within applications.
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015NAVER / MusicPlatformThe document discusses functional reactive programming (FRP) using RxJava, detailing its concepts, benefits, and implementation techniques. It highlights the use of observable patterns to handle asynchronous data streams and event-driven programming styles. The content includes practical code examples and applications in server development, emphasizing the integration of RxJava with web services and reactive data handling.
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정Easy to understand review of nature of the Lock-free algorithm.
작년에 KGC2013에서 했던 내용의 업데이트 버전임. C++11에 맞추어 업데이트 되었음.
Hawkular overviewjbugkoreaHawkular is an open source monitoring project that is the successor to JBoss ON (RHQ). It provides REST services for collecting and storing metrics and triggering alerts. Some key features include storing metrics in a Time Series database based on Cassandra, providing alerting on metrics, and integrating with projects like ManageIQ and Kubernetes. Hawkular has several sub-projects including Hawkular Services for base functionality, Hawkular Metrics for metrics storage, and Hawkular APM which is now deprecated in favor of adopting CNCF's Jaeger for distributed tracing.
미들웨어 엔지니어의 클라우드 탐방기jbugkoreaThis document discusses the role of a middleware engineer and their experience transitioning to cloud development. It summarizes the engineer's background as a J2EE developer who was initially confused by cloud concepts like IaaS, PaaS, and SaaS. It then covers their journey learning Linux skills while working at a open source company, discovering tools like Docker and Kubernetes for automating middleware provisioning, and recognizing the value of Platform as a Service for simplifying development environments.
Micro Service Architecture 탐방기jbugkoreaThe document discusses reasons for adopting a microservices architecture (MSA). It notes that MSA can help simplify software structure, enable faster development and deployment to meet time-to-market goals. The document also lists nine key characteristics of MSA, including decomposing applications into independently deployable services, organizing around business capabilities rather than projects, decentralized governance and data management, and designing for failure.
INFINISPAN non-clustering Spring4 WEB/MOBILE APP 구축jbugkorea2015 JBUG KOREA MEETUP
최근 빅 이슈인 인메모리 데이터 그리드 Infinispan을 활용하여 Clustering 하지 않으면서 확장이 가능한 Spring4 기반의 웹/모바일 환경 구축방법
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트jbugkoreaThe document discusses Arquillian, a testing framework that allows integration tests to be written and run similarly to unit tests. It can package components into deployable archives, launch tests inside a container, and support running tests from an IDE. Benefits include being able to run integration tests incrementally like unit tests without needing to rebuild between test runs.
Undertow 맛보기jbugkoreaThis document provides an overview of Undertow, an embeddable web server for Java applications. It discusses Undertow's lightweight and high performance architecture based on small reusable handlers. Key features mentioned include support for Servlet 3.1, web sockets, and acting as a reverse proxy. The document also briefly outlines Undertow's handler-based approach and some built-in handlers like path matching, virtual hosts, and error handling.
JBoss Community IntroductionjbugkoreaThe document introduces the JBoss Community, which was started in 1999 by Marc Fluery with a focus on middleware. It grew popular as the EJB container when Java grew and now has over 100 open source projects focused on Java standards and middleware development. Red Hat acquired JBoss Community in 2006 and supports enterprise middleware subscriptions. The community's principles are standards-driven innovation and rapid technology adoption seen in technologies like parallel loading in JBoss 7. Major projects include Hibernate and Drools.
JBoss AS 7 따라잡기jbugkoreaThe document discusses JBoss Application Server 7 and compares it to other application servers like WildFly and Tomcat. It introduces WildFly as the new name for JBoss Application Server to reduce confusion. It then provides an overview of new features in JBoss AS 7 like support for Spring 3.x, MyBatis 3.x, and domain mode configuration.
Infinispan Data Grid PlatformjbugkoreaThe document introduces the Infinispan data grid platform. It discusses how Infinispan can be used as a distributed in-memory cache both as a library and server. Key features of Infinispan are clustering, persistence, transactions, querying, and map-reduce capabilities. Examples of using Infinispan for session clustering and as a state store for Storm processing are provided.
Java 8 - A step closer to ParallelismjbugkoreaJava 8 introduces several new features that help modernize the Java platform and move it closer to parallelism. These include lambda expressions, which allow treating code as data, and default methods in interfaces, which allow interfaces to evolve while maintaining compatibility. Streams and bulk operations on collections enable a more functional, parallel style of programming. The invokedynamic bytecode instruction is enhanced to allow lambda expressions to be compiled to anonymous methods and executed efficiently by the JVM.
JBoss Community's Application Monitoring PlatformjbugkoreaThis document introduces two open source projects, RHQ and Byteman, that can help software engineers broaden the scope of their development activities. RHQ is a platform for monitoring JBoss applications, while Byteman allows testing and debugging of applications. The presentation aims to share stories about these tools in order to help developers expand their work.
4. DzԳܰԳ(병행성)의 도전
암달의 법칙(Amdahl's law)
병렬 컴퓨팅에서 멀티 프로세서를 사용할
때 프로그램의 성능향상은 프로그램의 순
차적인 부분에 의해 제한된다. 예를 들면,
프로그램의 95%가 병렬화 할 수 있다면
이론적인 최대 성능 향상은 아무리 많은
프로세서를 사용하더라도 최대 20배로 제
한된다.
http://en.wikipedia.org/wiki/Amdahl's_law
13. Actor Model
다른 액터에 한정된 개수의 메세지를 보낼 수 있다.
유한한 개수의 액터를 만들어 낼 수 있다.
다른 액터가 받을 메세지에 수반될 행동(behavior)을 지정 할 수
있다.
이런 일들이 동시적으로 진행되는데 있어 미리 정해진 순서는 없
다.
- 칼 휴이트(1973)
14. Actor Model
현실에 액터(사람)를 상상하면 이해하기 편하다.
- 사람은 생각을 공유 못하고 전자우편으로 소통한다.
- 액터는 이름, 행동, 의사소통으로 구성
Message passing
No shared memory
16. Actor Model
Bruce : “그 때(루비를 만들었을 당시)로 돌아간다면, 어떤 기
능에 변화를 주고 싶으세요?”
Matz: “Thread를 없애고, Actor 나 또는 진보된 형태의 동시
성 기능을 추가했을꺼예요.”
Interview with Yukihiro Matsumoto (the creator of Ruby)
from the book, “Seven Languages in Seven Weeks”
17. STM (Software Transactional Memory)
소프트웨어 트랜잭셔널 메모리(Software Transactional Memory, STM)는 컴퓨
터 과학에서 병렬 컴퓨팅에서 공유 메모리으로의 접근을 제어하기 위한 데이터
베이스 트랜잭션과 유사한 동시성 제어 구조이다. 여기에서 트랜잭션은 공유 메
모리에 읽기 및 쓰기를 수행하는 코드 조각을 가리킨다. 하나의 트랜잭션 안에서
수행되는 읽기 및 쓰기는 논리적으로 한 순간에 수행되는 것으로 이해할 수 있
다.
http://ko.wikipedia.org/wiki/소프트웨어_트랜잭셔널_메모리
http://en.wikipedia.org/wiki/Software_transactional_memory
ACI(원자성, 일관성, 고립성) 보장 - D(지속성) 제외