ThinkAboutSoftware / OnlineSelfCodingGroup

Online coding and study group at every Saturday at 10:30 am.
MIT License
18 stars 4 forks source link

54th online meetup, 2021-11-27 #92

Closed jongfeel closed 2 years ago

jongfeel commented 2 years ago

https://meet.google.com/jyx-mxnq-kpk

참여 방법:

Assignees에 자신의 github 계정을 self로 추가 2시간 분량의 할 내용에 대해 댓글 작성 (최소 모임 시작 전까지) 빛의 속도 혹은 (주말, 휴일 포함) 최소 3일 내에 구글 캘린더 등록 메일 확인 모임 시간에 각자 개발 관련된 공부 진행

모임 끝난 후 공부한 내용 정리 & 링크 추가 => 최소 다음 모각코 전까지 확인 가능해야 함.

주의: 회사일 혹은 마감 기한 임박한 일 처리의 경우는 최대한 자제해 주세요. 주말 아침에 일하면 우울하니까요. ㅜㅜ

jongfeel commented 2 years ago

이번 토요일은 42Seoul에서 멘토단 워크샵이 있어서 워크샵 참여 예정입니다. 저는 워크샵에 참여하고 인증샷을 남길 예정입니다. 물론 10시 30분 진행, 12시 30분 종료는 예정대로 진행 가능합니다. 안심하세요.

워크샵은 소노캄제주에서 합니다.


사진 찍은거 올려 봅니다. IMG_0731 IMG_0743

ellen310 commented 2 years ago

유니티의 보안방식

완전한 보안보다는 공격자를 '귀찮게' 하는 것이 유니티에서의 보안 목표이다.

  1. 난독화(Obfuscator) 코드변조공격을 예방하기 위한 난독화 에셋. 클래스, 변수명, 함수명 등 선택적으로 난독화가 가능하다.
  2. 메모리치팅방지(Anti-Hacking) 메모리치팅을 막기 위한 에셋. str을 입력받는다. 암호화키와 보호하려는 변수를 XOR한다. 이 결과를 str에 append한다. 여기에 해당 변수를 참조할 때 마다 해당 메모리를 주기적으로 변경하는 '메모리셔플'을 함께 진행한다.
  3. 해시 활용 playerPrefs 등 정보를 변조없이 관리하고자 해시알고리즘을 활용한다. 저장할 key의 해시를 얻음, 그 해시를 hideKey로 사용.(해커가 key를 보고 용도를 파악하지 못하게 하기 위함).+salt처리(공개해시알고리즘이기 때문) 저장하려는 value의 해시를 얻음, 그 해시와 value를 더한 후 암호화(복호화시 value가 변조되었는지 확인하기 위함). 그렇게 얻은 결과들을 playerprefs로 저장.
  4. 대칭키와 공개키 암호화 적용 대칭키가 속도가 빠르므로 두루 사용.

html-python 연동

brython등 몇몇 방식이 있었으나, php를 사용하여 python파일을 실행시키는 것이 가장 직관적인 것 같다.

[form_action.php] $textPath = $_GET['textPath']; //html input 값 가져옴 $command = escapeshellcmd('python cannyFrame.py '.$textPath); $output = exec($command);

wjrmffldrhrl commented 2 years ago

논문 읽기

Real-time Data Infrastructure at Uber

real_time_data_infrastructure_at_uber.pdf.pdf

Abstract

우버에서는 굉장히 많은 양의 데이터가 실시간으로 발생하고있고 이러한 데이터들은 사기 검출, 예측 모델 머신러닝에 사용할 수 있는 가치가 높은 데이터들이다.

해당 논문에서는 실시간 데이터를 다루는 인프라에 대해서 소개하고 세 가지의 아키텍처 스케일링 과제들에 대해서 확인한다.
우버에서는 오픈소스 기술에 크게 의지하고 있으며 이러한 오픈소스 소프트웨어를 우버의 환경에 맞게 커스터마이징하여 사용하고있다.

Conclusion

논문에서 나온 것 처럼 실시간 데이터 인프라는 우버에서 향상되었고 이러한 모든 기술은 우버 내부에서 필수적으로 해결해야 할 요소들에 힘을 실어주고있다.

이 기술은 유연성에 최적화되었고, 각각의 사용자에 맞게 조절되며, 몇 년간 생산성에서 신뢰성 있는 운영을 하게 해주고, 매일 발생되는 페타바이트 데이터들을 처리할 수 있게 해주었다.

오픈소스 기술의 선택은 엔지니어링 비용을 아주 많이 절약하였고 분석용 제품을 선보이는데 필요한 시간을 급격하게 감소시켰다.

우버의 엔지니어링 팀이 기여로 이러한 기술들이 핵심적인 세 가지 scaling challenge들을 극복해낼 수 있도록 해주었다.

Scaling Data

Kafka의 thin client libraries(?), cluster federation, 우버에서 매일 서비스되는 kafka와 매끄럽게 연결할 수 있는 다른 기술들 에 대해 소개됐다.

이것은 모든 사업부에서 미션 크리티컬 사례들에 활용되는 Flink와 Pinot 데이터 파이프라인의 오케스트레이션에 필요한 튼튼한 기반을 제공해준다.

배포와 실패 복구 작업의 Flink job 자동화는 적은 오버헤드로 광범위한 채택(widespread adoption?)을 제공해준다.

We were also able to overcome the lack of high availabil ty SLA for our data archival (HDFS) layer with the investments in Flink’s robust checkpoints and Pinot’s peer-to-peer segment recovery scheme 또한 Flink의 강력한 체크포인트와 Pinot의 P2P 세그먼트 복구 체계에 대한 투자로 데이터 보관 레이어의 고가용성 SLA의 부족함을 극복해낼 수 있습니다.

Scaling use cases

Uber는 위에서 설명한 다양한 사례에 힘을 실어주기 위해 각각의 기술의 유연성에 과감한 투자를 진행했다.

예를 들어

with the same client protocol (Apache Kafka consumer) we’re able to serve a wide spectrum of use cases from logging which trades off data consistency for achieving high availability, to disseminating financial data that needs zero data loss guarantees in a multi region ecosystem ??

Pinot은 실시간 데이터를 탐색하기위해 Presto 통합으로 지연이 적은 OLAP 레이어를 제공한다.

Scaling users

최종적으로, Uber는 추상화화 인터페이스로 기술과 사용자 사이에 간접적인 레이어를 추가할 수 있게 되어 사용자를 지원하는 비용을 감소할 수 있게 되었다.