기술없는 기술 블로그 RSS 태그 관리 글쓰기 방명록
study/all (6)
2021-05-30 23:05:31

개인적으로 가장 신나서 썼던 과제가 아닌가 했다. GCP에서 했던 프로젝트를 AWS로 슬슬 환경을 옮긴 후에 과정을 포스팅할까 생각하던 차이기도 했고 분산 처리 실습을 할 때 GCP에서 읽어봤던 도큐먼트와 AWS에서 제공하는 기능의 도큐먼트는 기능적으로 차별점은 있지만 본 적 없는 기능이나 개념적으로 생소한 서비스가 있던 것은 아니라 작성하기 수월했다.

https://aws.amazon.com/ko/

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

제조 AWS를 활용한 Siemens의 에너지, 의료 서비스, 제조 분야 혁신 Siemens가 AWS를 사용하여 어떻게 문화를 바꾸고 혁신을 장려하며 비즈니스 성과를 창출했는지 알아보세요. 자세히 알아보기  업종

aws.amazon.com

https://youtu.be/rqxLw0hafFY

https://aws.amazon.com/ko/blogs/korea/preparing-for-game-launch-on-aws/

AWS 기반 게임 개발자를 위한 안내서 – 2부. 게임 출시 전 반드시 챙겨야 할 것들 | Amazon Web Services

전 세계에 대규모 게임 사용자를 위한 빠르고 민첩한 게임 서비스 개발을 위해 클라우드 활용은 필수가 되었습니다. 세계 최대 게임 회사의 90%가 AWS 기반 게임 서비스를 제공하고 있으며, 국내

aws.amazon.com

위 3가지는 카카오게임즈 채용정보에서 순서대로 제공되는 링크이다.

개인적으로 분산 처리 공부를 하면서 aws 영상 중에 마음에 드는 영상들을 좀 더 넣자면
https://youtu.be/HI0fPiZpniY

https://youtu.be/R1UWYQYTPKo


이 두 가지는 꼭 한 번 쯤 봐도 괜찮은 영상이라 생각한다.



AWS Route 53

  • 사용자가 게임 서버에 접속 시 DNS 제공.
  • 각 리전마다 존재하는 네임서버로 낮은 지연시간 보장


Amazon CloudFront, Amazon S3

  • 정적 데이터(게임 업데이트, css, html, js)를 저장.
  • 게임 패치 다운로드와 같은 동일한 작업을 캐시
  • 정적 데이터에 대한 트래픽과 서버에 대한 부하를 분산

ELB (Elastic Load Balancing)

  • 특정 서버의 트래픽 집중을 막기 위한 부하 분산기
  • 멀티 리전, 멀티 AZ에 맞춰 탄력성 있게 확장

Multi AZ

  • 서버 혹은 DB에서 장애 발생 시 대처
  • 내구성과 고가용성 확보
  • 손 쉬운 서버, DB 이중화를 통해 자동 장애 조치


Auto Scaling

  • 컴퓨팅 능력을 초과하는 트래픽 집중 혹은, 연산 시 서버 스케일 조절
  • 비용최적화를 위해 서버 사이즈를 조절하기 위해 중요
  • 서비스의 demand와 usage를 기반으로 서버의 scale-up, scale-down을 조절

Amazon SQS, Amazon Lambda

  • 디비 부하가 큰 작업이나 사용자가 많은 서비스에서 필수적인 메시지 큐를 SQS와 Lambda로 구현
  • 각 메시지의 우선순위 지정이나 오토 스케일링을 통해 프로세스 증, 감소 가능


RDS Replication, ElasticCache

  • DB 이중화를 통해 장애 발생 시 복구 가능
  • Master DB가 정상 작동 시, Slave DB는 Read Only Replica 역할 수행
  • 추가 옵션
    • RDS Read-Only Replication
      • 사용자의 증가로 읽기 부하 증가 시, Read Replica 기능으로 읽기 부하 감소
    • ElasticCache (memcached, redis)
      • 인메모리 관리형 캐시 서비스
      • 관리형 memcached, redis 지원
      • 장애 치유 기능 확보


2021-05-29 18:24:20


GNU/sed 명령어를 기준, 3306 포트만 열려있다고 가정했다.

A 서버에서 작동하는 스크립트

cp /home/myhome/sample_before.txt /home/myhome/sample_after.txt 
## sample_after.txt 파일 생성 

sed 's/10.1.2.3/10.1.2.4/' /home/myhome/sample_after.txt 
sed 's/test/svc/' /home/myhome/sample_after.txt sed 's/mypassword/mypassword!@#/' /home/myhome/sample_after.txt 
## 파일 내용 변경 

scp -P 3306 /home/myhome/sample_after.txt svc_user@10.1.2.4:/home/yourhome/
## 파일 전송

B 서버에서 작동하는 스크립트

scp -P 3306 test_user@10.1.2.3:/home/myhome/sample_before.txt /home/yourhome/ 
## A 서버에 존재하는 sample_before.txt 파일을 복사 

mv /home/yourhome/sample_before.txt /home/yourhome/sample_after.txt 
## 이름 변경, sample_before.txt -> sample_after.txt 

sed 's/10.1.2.3/10.1.2.4/' /home/yourhome/sample_after.txt sed 's/test/svc/' /home/yourhome/sample_after.txt sed 's/mypassword/mypassword!@#/' /home/yourhome/sample_after.txt 
## 파일 내용 변경

 

2021-05-29 18:11:24
사전과제 2번 플랫폼의 이해

2번 과제는 로그인, 카카오톡 친구 초대 기능의 시퀀스 다이어그램을 그리는 과제였다.
대략적인 기능의 시퀀스는 짐작되지만 SDK 가이드 링크와 각 환경 별 API 레퍼런스가 준비되어 있는 것을 보고 조금 더 구체적으로 실제 사용되는 시퀀스 다이어그램을 작성하는 것을 요구하는 것이라 생각했다.
포함 가능한 항목으로 클라이언트, 게임서버, 플랫폼SDK, 플랫폼 서버 4가지 명시되어 있기 때문에 로그인 인증기능에 사용되는 IDP 서버까지 플랫폼 서버로 통합했다.

Unity와 iOS는 사용해본 적이 없지만 다행히 Android 환경에서 작업해본 경험이 있어서 Android SDK API 레퍼런스를 기준으로 작성했다.

https://tech-wiki.kakaogames.com/display/SDK/Kakaogame+SDK+Guide+for+Channeling

Kakaogame SDK Guide for Channeling - Kakaogame SDK 3.0 Guide for Channeling - kakaogames

Skip to end of banner Go to start of banner Kakaogame SDK Guide for Channeling Skip to end of metadata Created by 최양민, last modified by Unknown User (zed.a@kakaogames.com) on 2017-05-15 Go to start of metadata 본 가이드는 Kakaogame SDK 및 Open

tech-wiki.kakaogames.com

https://kakao-sdk-release.s3.amazonaws.com/KakaoGameSDK/APIReference/Android/index.html

Generated Documentation (Untitled)

kakao-sdk-release.s3.amazonaws.com

로그인

DP 인증 센터에 등록 된 계정을 이용한 로그인 기능

카카오톡 친구초대(3.9.0 이상)

진행중인 초대 이벤트 조회하기

카카오톡 친구초대 기능을 사용하기 위해 초대 이벤트 정보를 조회하는 시퀀스 다이어그램

진행 중인 이벤트가 여러 개 존재할 수 있기 때문에 List 형태로 카카오톡 친구 초대 이벤트 정보를 받아와 이벤트 정보 속성을 저장

카카오톡 초대 가능한 추천 친구 목록 조회하기

카카오톡 친구 초대를 보내기 위해 초대 가능한 친구 목록을 조회하는 기능의 시퀀스 다이어그램


친구 목록을 조회하기 위해서 추천 친구 목록, 조회할 친구 목록의 오프셋, 조회 개수를 지정해주어야합니다.
조회에 성공 했다면 전체 친구 수와 친구 목록을 반환합니다

카카오톡 초대 메시지 보내기

카카오톡 초대 메시지를 보내는 기능의 시퀀스 다이어그램

카카오톡 초대 메시지를 보내기 위해서 이벤트 아이디, 수신할 사람의 카카오톡 프로필, 초대 메시지의 템플릿 아이디가 필요합니다.
Client 내부 저장소에 템플릿 아이디를 저장할 수 있지만 Game Server에서 템플릿 아이디를 조회해서 일관성을 유지한다고 가정

내가 초대 메시지를 보낸 친구 숫자 조회하기

내가 초대 한 친구 수를 조회하는 기능의 시퀀스 다이어그램


해당 초대 이벤트에서 초대 한 친구 수를 조회하기 위해 이벤트 아이디를 준비합니다.
조회 성공 시 초대한 친구의 전체 수와 게임에 가입한 친구 수를 반환합니다

내가 초대 메시지를 보낸 친구 목록 조회하기

내가 초대 한 친구 목록을 조회하는 기능의 시퀀스 다이어그램


해당 초대 이벤트에서 초대 한 친구 목록을 조회하기 위해 이벤트 아이디를 준비합니다.
조회 성공 시 게임에 가입한 친구 목록과 가입하지 않은 친구 목록을 반환합니다.

나에게 초대 메시지를 보낸 플레이어 숫자 조회하기

나를 초대 한 플레이어 수를 조회하는 기능의 시퀀스 다이어그램


해당 초대 이벤트에서 나를 초대 한 플레이어 수를 조회하기 위해 이벤트 아이디를 준비합니다.
조회 성공 시 해당 초대 이벤트에서 나를 초대한 플레이어 수를 반환합니다.

나에게 초대 메시지를 보낸 플레이어 목록 조회하기

나를 초대 한 플레이어 목록을 조회하는 기능의 시퀀스 다이어그램


해당 초대 이벤트에서 나를 초대 한 플레이어 목록을 조회하기 위해 이벤트 아이디를 준비합니다.
조회 성공 시 해당 초대 이벤트에서 나를 초대한 플레이어 목록을 반환합니다.
단, 나를 초대한 플레이어가 없을 수 도 있습니다.


2021-05-27 22:05:48


지난주에 마감한 카카오게임즈에서 기술직군 인턴에 지원했는데 코딩테스트 대신 사전과제가 있었다. 인턴십 지원 기간에 업로드 할 만한 내용은 아니라 시간이 좀 지난 오늘부터 포스팅을 시작하기로 했다.


아무래도 사전과제 1번 항목의 경우 업무 수행에 관한 서술과제이다 보니 조금 조사가 필요했다.
채용 정보 사이트에서 카카오게임즈 채용에 대해 검색해 보니 기술지원 PM에 대한 채용의 지원 조건, 우대 사항과 인터뷰 등을 검색으로 확인할 수 있었고 그림처럼 플랫폼과 서비스 인프라 두 가지로 요약할 수 있었다.

플랫폼 연동 기술지원 PM 채용 정보

https://www.inven.co.kr/webzine/news/?news=206550
플랫폼, 서비스 인프라 구축에 대한 발표 내용

해당 항목에 대해선 구체적인 서술 내용은 올리지 않으려 한다. 기술직군 entity 내부의 resolve Technical Issue와 사업, 개발사, 기술직군, QA 사이의 Issue를 연관 관계로 기술직군을 중심으로 개발사와의 어떤 기술적인 이슈 해결을 위해 소통을 할지에 대해 기술했다.

2021-04-10 23:55:12

마리아디비 설치는 sudo apt-get install mariadb-server를 터미널에 입력하면 설치할 수 있고 mysql과 사용법이 똑같아서 sudo mysql -uroot -p로 쉽게 접속할 수 있지만 라즈베리에 설치하다 보니 온라인으로 접속할 필요를 느껴서 워크벤치랑 온라인으로 연결하기로 했다.

나는 mariadb-server를 사용하니까 /etc/mysql/mariadb.conf.d 디렉토리 안에 있는 50-server.cnf를 편집한다.

$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 127.0.0.1 부분을 주석처리하거나 지워준다.
일부러 구분하기 편하게 ## 두개로 주석처리했다.

bind-address는 해당 IP 주소에서 접속만 허용한다는 의미다. 루프백 IP 혹은 localhost로 부르는 IP가 127.0.0.1이니까 컴퓨터 내부에서만 접속을 허용한다는 의미다.

$ sudo service mysql restart


service 대신에 systemctl을 써도 상관없다. 설정을 바꿨으니 재실행 시킨다.

[mysql]> grant all on <DB이름>.<테이블> to <'user'>@<'host'> identified by <'password'>; [mysql]> flush privileges;


host 부분에 '%'를 넣으면 모든 IP에서 접근이 가능해지고 'localhost' 혹은 '127.0.0.1'을 넣으면 라즈베리파이에서만 접근이 가능하다. 원격으로 조회가 안된다는 뜻.

모든 DB와 테이블에 권한을 부여하고싶으면 *.* 을 특정 DB만 부여하고싶으면 <특정 DB이름>.* 를 특정 DB의 특정 테이블만 권한을 부여하고싶으면 <DB 이름>.<해당 DB에 있는 테이블 이름>을 적는다.

2021-04-07 23:27:01

라즈베리파이 ftp 연결하다 service랑 systemctl 차이가 궁금해서 찾아봤다

 

간편하게 말하면 service는 systemctl의 wrapper script다

밑에 있는 사이트에서 systemctl을 검색하면 systemctl call이라는 주석이 보인다.

start나 stop과 같은 기능을 할 때 부가적인 요소들을 어느정도 같이 제어해준다고 생각하면 될 것 같다.

 

git.launchpad.net/~usd-import-team/ubuntu/+source/init-system-helpers/tree/script/service?h=ubuntu/xenial

 

service\script - ~usd-import-team/ubuntu/+source/init-system-helpers - [no description]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 8

git.launchpad.net