2021년 2월 21일 모바일 게임 매출 순위
Rank | Game | Publisher |
---|---|---|
1 | 리니지M | NCSOFT |
2 | 리니지2M | NCSOFT |
3 | 그랑사가 | NPIXEL |
4 | Cookie Run: Kingdom – Kingdom Builder & Battle RPG | Devsisters Corporation |
5 | 기적의 검 | 4399 KOREA |
6 | 세븐나이츠2 | Netmarble |
7 | Genshin Impact | miHoYo Limited |
8 | 라이즈 오브 킹덤즈 | LilithGames |
9 | Brawl Stars | Supercell |
10 | 뮤 아크엔젤 | Webzen Inc. |
11 | 바람의나라: 연 | NEXON Company |
12 | 미르4 | Wemade Co., Ltd |
13 | Roblox | Roblox Corporation |
14 | KartRider Rush+ | NEXON Company |
15 | V4 | NEXON Company |
16 | A3: 스틸얼라이브 | Netmarble |
17 | 메이플스토리M | NEXON Company |
18 | S.O.S:스테이트 오브 서바이벌 | KingsGroup Holdings |
19 | 블레이드&소울 레볼루션 | Netmarble |
20 | PUBG MOBILE | KRAFTON, Inc. |
21 | R2M | Webzen Inc. |
22 | 찐삼국 | ICEBIRD GAMES |
23 | FIFA ONLINE 4 M by EA SPORTS™ | NEXON Company |
24 | 카운터사이드 | NEXON Company |
25 | 리니지2 레볼루션 | Netmarble |
26 | 라그나로크 오리진 | GRAVITY Co., Ltd. |
27 | Epic Seven | Smilegate Megaport |
28 | 가디언 테일즈 | Kakao Games Corp. |
29 | Cookie Run: OvenBreak – Endless Running Platformer | Devsisters Corporation |
30 | 검은강호2: 이터널 소울 | 9SplayDeveloper |
31 | Empires & Puzzles: Epic Match 3 | Small Giant Games |
32 | Homescapes | Playrix |
33 | FIFA Mobile | NEXON Company |
34 | 붕괴3rd | miHoYo Limited |
35 | Lords Mobile: Kingdom Wars | IGG.COM |
36 | 어비스(ABYSS) | StairGames Inc. |
37 | 랑그릿사 | ZlongGames |
38 | AFK 아레나 | LilithGames |
39 | Age of Z Origins | Camel Games Limited |
40 | 그랑삼국 | YOUZU(SINGAPORE)PTE.LTD. |
41 | 컴투스프로야구2021 | Com2uS |
42 | Pmang Poker : Casino Royal | NEOWIZ corp |
43 | Gardenscapes | Playrix |
44 | Top War: Battle Game | Topwar Studio |
45 | 한게임 포커 | NHN BIGFOOT |
46 | 사신키우기 온라인 : 갓 사신 | DAERISOFT |
47 | 갑부: 장사의 시대 | BLANCOZONE NETWORK KOREA |
48 | 프린세스 커넥트! Re:Dive | Kakao Games Corp. |
49 | 블리치: 만해의 길 | DAMO NETWORK LIMITED |
50 | 검은사막 모바일 | PEARL ABYSS |
Fundamentals aboutScalability of Software Systems -번역
소프트웨어 시스템의 확장성에 대한 기본 사항
확장 가능한 시스템 설계를위한 Intuition 구축 가이드
나는당신이 식료품 점의 주인이라고 상상해보십시오.청구 카운터가 하나 있습니다.고객이 당신의 상점, 물건을 골라서이 청구서 카운터에 줄을 서서 지불하십시오.고객을 돌보는 청구 카운터 뒤에 John이라는 직원이 있습니다.John은 각 고객을 미소로 맞이하고 청구하는 동안 고객과 작은 대화를 나누는 행복한 행운의 사람입니다.John은 매장의 고객 수가 적을 때 자신 만의 달콤한 시간을 보냅니다.줄 서두르지 않고 아무도 불평하지 않습니다.그러나 서두르는 날이 많을 때 John은 대화를 줄이고 빠르게 움직이고 고객을 관리하려고합니다.
얼마 지나지 않아 식료품 가게가 마을에서 유명해지면서 매장으로 유입되는 고객이 몰려 드는 것을 볼 수 있습니다.그것은 사업에 매우 좋습니다.그러나 이제 당신은 문제에 직면 해 있습니다.직원 John 1 명과 청구 카운터 하나만 있습니다.John은 고객 부담을 처리하기 위해 최선을 다하고 있지만 그가 투입 할 수있는 노력에는 물리적 한계가 있습니다. 결국 그는 인간입니다.또 다른 문제가 있습니다.John이 건강하지 않거나 휴가를 가야하는 날이 있습니다.이러한 경우에는 다른 일을하기 위해 주로 외곽에 있기 때문에 상점을 닫아야합니다.가게는“유효한”그런 날에.
당신은해야“규모”이러한 문제를 해결하기 위해
Sam이라는 다른 직원을 고용하고 두 번째 청구 카운터를 열기로 결정했습니다.이것은“하중”존에.2 개의 대기열이 있습니다.일부 고객은 Sam으로 이동하고 다른 고객은 John으로 이동합니다.당신은 행복하고 John은 행복하며 고객도 행복합니다.이것은 또한 두 번째 문제를 어느 정도 해결합니다.직원 중 한 명을 사용할 수없는 날에는 다른 직원이 고객을 처리 할 수 있습니다.물론 그에 대한 부담은 훨씬 더 많 겠지만 적어도 그날 매장을 닫을 필요는 없습니다.여전히 “사용 가능”합니다.
결국 고객 수가 계속 증가하고 있으며 세 번째 청구 카운터를 열고 세 번째 직원을 고용하기로 결정합니다.이 전략은 효과가 있습니다.상점은 항상 가득 차 있으며 고객은 이제 3 개의 대기열을 형성합니다.그러나 때로는 한 청구 카운터에서 다른 것보다 라인이 큰 상황이 있습니다.고객은 임의의 카운터에 서기로 결정하고 한 직원은 매우 바쁘고 다른 두 직원은 상대적으로 자유로울 수 있습니다.이러한 상황을 극복하기 위해 네 번째 직원을 고용합니다.그의 임무는 3 개의 카운터 모두 중앙에 서서 어떤 카운터가 무료인지 등을 확인하여 고객에게 어디로 가도록 안내하는 것입니다.그는 직원들에게 어느 정도 균등하게 분산되도록 작업 부하를 “균형”합니다.
===================================
이것이 소프트웨어 애플리케이션과 어떤 관련이 있습니까?거의 모든 부분.
매우 높은 수준에서 소프트웨어 웹 애플리케이션은 애플리케이션을 호스팅하는 웹 서버와 데이터를 유지하는 데이터베이스 서버로 구성됩니다.위의 이야기에서-
“식료품 점”을 “소프트웨어 응용 프로그램”으로 교체
John을이 응용 프로그램을 유지 관리하는 웹 서버 / 데이터베이스 서버로 바꿉니다.
고객을 애플리케이션의 “사용자”로 바꾸십시오.
이 설정의 아키텍처는 다음과 같습니다.

사용자 (또는 고객)는 URL (www.myapplication.com)을 통해 애플리케이션에 액세스합니다.HTTP 요청은 웹 서버로 전송됩니다.웹 서버는 HTML 페이지를 반환합니다.웹 서버 / DB 서버를 John이 고객의 요청을 처리하는 것처럼 생각하십시오.고객 수가 증가하면 설정 (예 : John)에 대한 부하가 증가합니다.고객은 응답 속도가 느리거나 웹 서버 / DB 서버가 사용 중이기 때문에 응답을받지 못하는 고객이있을 수 있습니다.너 뭐하니?당신은해야“규모”
Vertical Scaling
수직 확장 ( “확장”이라고도 함)은 서버에 더 많은 전력을 추가하는 것을 의미합니다.예 : 더 많은 부하를 처리 할 수 있도록 더 많은 CPU 또는 RAM을 추가합니다.이것은 John이 더 많은 에너지를 사용하고 잡담을 줄이고 빠르게 행동하기 시작한다고 말하는 것과 같습니다.나는 이것이 매우 나쁜 비유라는 것을 알고 있지만 당신은 아이디어를 얻습니다.
수직 확장에는 제한이 있습니다.하나의 서버에 무제한 메모리 또는 모든 무제한 CPU를 추가 할 수는 없습니다.그것은 존이 자신의 신체적 한계만큼 빨리 행동 할 수 있다고 말하는 것과 같습니다.그 이상은 아닙니다.또한이 경우 서버가 다운되면 (John이 휴가를 떠난다) 애플리케이션이 다운됩니다.”사용할 수 없음”이됩니다.
수평 확장
수평 확장 또는 “확장”은 설정에 더 많은 서버를 추가하는 것을 의미합니다.추가 직원을 고용하고 매장에 더 많은 청구 카운터를 여는 것과 같습니다.이 접근 방식은 사용자가 많고 데이터 처리가 필요한 대규모 애플리케이션에 더 적합합니다.설정에 추가 할 수있는 서버 수에는 사실상 제한이 없습니다.따라서 애플리케이션은 가능한 한 많은로드를 처리 할 수 있습니다.설정에 많은 서버가있는 경우“로드 밸런서”들어오는 트래픽을 서버에 균등하게 분배하기 위해 (식료품 점에 대한 이야기에서 고객을 다른 청구 카운터로 안내하는 일을 맡은 네 번째 직원을 고용했습니다.)

이렇게하면 문제도 해결됩니다. 한 서버가 다운 되어도 다른 서버는 계속 작동 할 수 있으며 응용 프로그램이 “사용 불가능”상태가되지 않습니다.이 개념은“고 가용성”.
데이터베이스 복제
위의 시스템 설계 (예…. 시스템 설계 또는 소프트웨어 아키텍처라고 부를 수 있음)에서 우리는 웹 서버를 관리했습니다.데이터베이스 서버는 어떻습니까?또한 데이터베이스 서버를 확장 할 수 있습니다.이것은 … 불리운다데이터베이스 복제.아이디어는 간단합니다.마스터 데이터베이스와이 마스터 데이터베이스의 여러 복사본 (슬레이브라고 함)이 있습니다.모든 삽입 / 업데이트 / 삭제는 마스터 DB에서 수행되고 슬레이브는 읽기 전용 데이터 저장소로 사용됩니다.이렇게하면 데이터베이스의 고 가용성도 보장됩니다.
간단히 말해서 확장성에 대해 생각하거나 소프트웨어 응용 프로그램이나 시스템 설계 또는 소프트웨어 아키텍처가 확장 가능하다고 말할 때 이는 시스템이 허용 가능한 응답 시간 제한 내에서로드 또는 요청을 처리 할 수 있음을 의미합니다.
웹 서버와 데이터베이스 서버의 수평 적 확장은이를 달성하는 훌륭한 방법입니다.하지만로드 / 응답 시간을 개선하기 위해 할 수있는 다른 조치가 있습니까?
캐싱
애플리케이션이 사용 중일 때 기본적으로 데이터베이스에 대한 요청이 처리되고 사용자에게 제공됩니다.이러한 요청 중 일부는 동일하고 반복적 일 수 있습니다.이러한 요청에 해당하는 데이터를 데이터베이스보다 빠른 임시 저장소에 저장하면 의미가 있습니다.”캐시”는 그러한 스토리지 중 하나입니다.애플리케이션 아키텍처에 캐시를 추가 할 수 있습니다.요청을 받으면 웹 서버는 먼저 데이터가 캐시에서 사용 가능한지 확인합니다.그렇다면 캐시에서 가져 와서 클라이언트로 보냅니다.그렇지 않으면 데이터베이스를 쿼리하고 데이터를 캐시에 저장 한 다음 클라이언트로 보냅니다.
이 기사가 확장성에 대해 생각하는 방법에 대한 접근 방식을 제공하기를 바랍니다.확장 가능한 시스템을 설계하고 구축하기위한 다른 많은 보완 기술이 있습니다.나는 후속 기사에서 그것들을 다루려고 노력할 것입니다.
Fundamentals aboutScalability of Software Systems
Fundamentals about Scalability of Software Systems
A guide for building Intuition for scalable system design
Imagine that you are the owner of a grocery store. You have one billing counter. Customers come into your store, pick stuff and get in line at this billing counter to pay. You have an employee named John, behind the billing counter taking care of customers. John is a happy-go-lucky person who welcomes each customer with a smile and strikes small conversations with them while billing. John takes his own sweet time when the number of customers in the store is less. There is not much rush in the queue and nobody complains. However, on some days when the rush is more, John cuts down his conversations, moves fast, and tries to manage the customers.
Very soon, your grocery store becomes famous in the town and you see an influx of customers pouring into the store. That’s very good for the business. However, now you are facing a problem. You just have 1 employee John and a single billing counter. John is trying his best to handle the customer load but there is a physical limit to the effort he can put in. After all, he is a human being. There is another problem also. There are days when John is not well or he has to take a leave. In such instances, you have to close the store as you are mostly out-of-town for other work. The store is not “available” on such days.
You have to “SCALE” to tackle these problems
You decide to hire another employee named Sam and open a second billing counter. This eases out the “load” on John. There are 2 queues. Some customers go to Sam while others go to John. You are happy, John is happy and your customers are also happy. This also solves the 2nd problem (to some extent). On days when one of your employees is not available, the other one can try to handle the customers. Of course, the load on him will be much more but at least you don’t need to close your store that day. It will still be “available”.
Eventually, the number of customers keeps on increasing and you decide to open a 3rd billing counter and hire a 3rd employee. You know, this strategy works. Your store is always full and customers now form 3 queues. Sometimes, however, there are situations when the line is big on one billing counter than others. Customers randomly decide to stand for any counter and it may end up that one employee is extremely busy while the other two are relatively free. To overcome such a situation, you hire a fourth employee. His job is to stand at the center of all 3 counters and direct customers where to go, by viewing which counter is free and so. He kind of “balances” the load of work so that it is more or less evenly distributed among your employees.
=====================================
What has this to do with Software applications? Pretty much every bit of it.
At a very high level, a software web application will consist of a web server that hosts the application and a database server that maintains the data. In the above story –
Replace “grocery store” with the “software application”
Replace John with the web server/database server which maintain this application.
Replace customers with “users” of your application.
The architecture of this setup looks like below.

The users (or customers) access your application through a URL (www.myapplication.com). The HTTP requests are sent to a web server. The webserver returns HTML pages. Think of a web server/DB server as if John is handling the requests from customers. As the number of customers increases, the load on your setup (i.e John) increases. The customers will start experiencing a slower response or some of them may not get a response since your webserver/DB server is busy. What do you do? You have to “scale”
Vertical Scaling
Vertical scaling, also known, as “scaling up” means that you add more power to your servers. e.g Add more CPU or RAM so that it can handle more load. This is equivalent to saying that John starts to use more of his energy, cut down his chit-chats, and act fast. I know this is a very bad analogy but you get the idea.
Vertical scaling has a limitation. You can’t just add unlimited memory or all unlimited CPU to just 1 server. It’s like saying that John can act only as fast as his physical limit. Not more than that. Also, in this case, if the server goes down (John goes on a leave), your application goes down. It will be “unavailable”.
Horizontal Scaling
Horizontal Scaling or “scaling out” means that you add more servers to your setup. It’s like you are hiring additional employees and opening more billing counters in your store. This approach is more suitable for large applications with a lot of users and a lot of data processing needs. There is virtually no limit on how many servers you can add to your setup. So your application can handle as much load as possible. When your setup has a lot of servers, you can use a “Load Balancer” to evenly distribute the incoming traffic to your servers (Remember, in our story of the grocery store, we hired a 4th employee whose job was to direct the customers to the different billing counters)

This also solves the problem — when 1 server is down, the other server can still keep functioning and your application does not become “unavailable”. This concept is also known as “High Availability”.
Database Replication
In the above system design (Yes….you can call it system design or software architecture), we have taken care of web servers. What about database servers? We can scale-out database servers also. This is called database replication. The idea is simple. You have a master database and several copies of this master database (known as slaves). All inserts/updates/deletes will be done on master DB while slaves will be used as read-only data stores. This ensures the high availability of your database as well.
In simple terms, if you think about scalability or when you say that your software application or system design or software architecture is scalable, it simply means that your system can handle the load or requests in acceptable limits of response times.
Horizontal scaling of web servers and database servers is an excellent way of achieving it. But is there anything else we can do to improve load/response time?
Caching
When your application is being used, essentially there are requests to the database which are processed and served to the user. Some of such requests can be the same and repetitive. It will make sense if we store the data corresponding to these requests in temporary storage which is faster than a database. “Cache” is one such storage. You can add Cache to your application architecture. On receiving a request, the webserver will first check if the data is available in the cache. If yes, it will grab it from the cache and send it to the client. Else, it will query the database, store the data in the cache and send it to the client.
I hope this article gave you an approach to how to think about scalability. There are many other and complementary techniques to design and build scalable systems. I will try to cover them in subsequent articles.
2021년 2월 20일 모바일 게임 매출 순위
Rank | Game | Publisher |
---|---|---|
1 | 리니지M | NCSOFT |
2 | 리니지2M | NCSOFT |
3 | 그랑사가 | NPIXEL |
4 | Cookie Run: Kingdom – Kingdom Builder & Battle RPG | Devsisters Corporation |
5 | 기적의 검 | 4399 KOREA |
6 | 세븐나이츠2 | Netmarble |
7 | 라이즈 오브 킹덤즈 | LilithGames |
8 | Genshin Impact | miHoYo Limited |
9 | Brawl Stars | Supercell |
10 | 뮤 아크엔젤 | Webzen Inc. |
11 | 바람의나라: 연 | NEXON Company |
12 | KartRider Rush+ | NEXON Company |
13 | Roblox | Roblox Corporation |
14 | 미르4 | Wemade Co., Ltd |
15 | A3: 스틸얼라이브 | Netmarble |
16 | V4 | NEXON Company |
17 | 메이플스토리M | NEXON Company |
18 | PUBG MOBILE | KRAFTON, Inc. |
19 | S.O.S:스테이트 오브 서바이벌 | KingsGroup Holdings |
20 | 블레이드&소울 레볼루션 | Netmarble |
21 | 찐삼국 | ICEBIRD GAMES |
22 | FIFA ONLINE 4 M by EA SPORTS™ | NEXON Company |
23 | 리니지2 레볼루션 | Netmarble |
24 | R2M | Webzen Inc. |
25 | 카운터사이드 | NEXON Company |
26 | 라그나로크 오리진 | GRAVITY Co., Ltd. |
27 | Epic Seven | Smilegate Megaport |
28 | 가디언 테일즈 | Kakao Games Corp. |
29 | Cookie Run: OvenBreak – Endless Running Platformer | Devsisters Corporation |
30 | 검은강호2: 이터널 소울 | 9SplayDeveloper |
31 | Empires & Puzzles: Epic Match 3 | Small Giant Games |
32 | Homescapes | Playrix |
33 | 컴투스프로야구2021 | Com2uS |
34 | FIFA Mobile | NEXON Company |
35 | 붕괴3rd | miHoYo Limited |
36 | 어비스(ABYSS) | StairGames Inc. |
37 | 랑그릿사 | ZlongGames |
38 | Age of Z Origins | Camel Games Limited |
39 | AFK 아레나 | LilithGames |
40 | 그랑삼국 | YOUZU(SINGAPORE)PTE.LTD. |
41 | Pmang Poker : Casino Royal | NEOWIZ corp |
42 | Lords Mobile: Kingdom Wars | IGG.COM |
43 | Gardenscapes | Playrix |
44 | 갑부: 장사의 시대 | BLANCOZONE NETWORK KOREA |
45 | Top War: Battle Game | Topwar Studio |
46 | 한게임 포커 | NHN BIGFOOT |
47 | 사신키우기 온라인 : 갓 사신 | DAERISOFT |
48 | 검은사막 모바일 | PEARL ABYSS |
49 | 프린세스 커넥트! Re:Dive | Kakao Games Corp. |
50 | 블리치: 만해의 길 | DAMO NETWORK LIMITED |