잡동사니/- 후기

GDG DevFest Seoul 2018 후기

shovelman 2018. 11. 23. 16:02

세미나 및 컨퍼런스등을 자주 참석하는 편은 아니지만 기회가 되면 부담 없이 편하게 다녀오곤 한다.

본인의 위치에서 열심으로 이루어낸 결과를 공유하는 발표자의 열정으로 부터 오는 자극에 만족하기 때문이다.

이번 글은 11월 GDG Devfest Seoul 2018에 놀러 갔던(?) 후기이다.

가벼운 마음으로 참석하여 가볍게 작성된 후기이니 참고하시길...



(GDG Devfest Seoul 2018)



실전 SPA 상태관리 톺아보기 - 김동우님(발표자료 바로가기)

톺아보기?. 처음에 오타인 줄 알았다. 순우리말이라니... (참고로, '틈이 있는 곳마다 모조리 더듬어 뒤지면서 찾다' 라고 한다)

우선 SPA란, Single Page Application의 약어로 '한 개의 페이지만 있는 애플리케이션'을 의미한다.

즉, 하나의 페이지에서 내용만 바뀌지 완전히 페이지가 로드되지 않는 애플리케이션이라는 것이다.


발표 중 언급된 사이트 중 하나인 'https://www.ogq.me/' 도 SPA인데, 

이것저것 클릭해보면 전체 변화 없이 부분적인 업데이트가 되는 것을 알 수 있다. (개발자도구를 실행한 상태로 확인해보면 이해하기 쉽다)


발표자는 React를 통한 개발을 해왔기에 (Facebook Developer Circle Seoul 운영진...)

React로 구현된 애플리케이션의 상태관리를 위해 사용했던 모듈들을 소개하는 시간으로 발표를 진행했다.


React를 접한 지 얼마 되지 않아... 가벼운 마음으로 들었던 세션이었다.



마이크로서비스 아키텍처에 서비스메시 끼얹기 (feat. Istio) - 김충섭님(발표자료 바로가기)

프로젝트 소스는 크기가 커지고, 복잡해지며 아래의 문제점들이 발생하게 된다.

1. 복잡한 소스 구조

2. 느린 빌드 속도

3. 오래 걸리는 테스트 코드 실행 + QA

4. 개발도구의 느려짐

5. 라이브러리, 프레임워크 버전업이 힘들어짐

6. 단일 언어 / 단일 프레임워크 사용


위의 문제점들을 해결하기 위해서 프로젝트 설계 시 정교함을 요구하게 되었고, MSA 도입이 시작되었다.

하지만 각각의 역할이 나누어진 여러 서비스를 거쳐 응답이 오기 때문에 아래와 같은 새로운 문제점들이 발생하게 된다.

1. 에러 발생 시 장시간 모름

2. 모니터 3대에 터미널 12개 (ㅎㄷㄷ)

3. 팀 간 소통이 안 됨

4. 넘치는 버그와 불가능한 디버깅

5. 트랜잭션 오류

6. 자주 업데이트되는 버전


분산된 서비스로 인해 증가하는 네트워크 이슈를 비롯한 분산 컴퓨팅 운영 시 발생할 이슈를 해결하는 방안은 무엇이 있을까?

이를 해결하기 위해 리오넬 메시가 아닌 '서비스 메시'(죄송합니다.)가 등장하게 되었다.

서비스메시는 애플리케이션이 다른 애플리케이션과 직접 통신할 수 있는 시스템을 의미하는데,

안정적이며 탄력적인 서비스를 제공하기 위한 중재자 역할을 하게 된다고 이해했다.


대표적으로 Zuul, Hystric, Linkerd, Envoy, Istio라는 플랫폼이 있으며, 발표자는 Istio에 대한 발표를 진행했다.

Istio는 특정 언어에 종속되지 않고 안정적인 시스템 운영을 도와준다.



(Istio)



Istio는 Envoy 플랫폼을 기반으로 중앙 관리 기능이 추가된 플랫폼이며,

경로 관리 기능, 오류 주입, 보안, 분산 추적, 모니터링 등의 기능을 제공한다고 한다.


데모를 통해 직접 해당 서비스를 눈으로 경험해보니 이해가 잘 되었고, 유익한 시간이었다.

Istio에 대한 데모를 확인하고 싶다면, 하위 주소를 참고하길 바란다.

(발표자 demo link : https://github.com/subicura/istio-demo)



Use Javascript More Strictly (feat. Typescript, Flow) - 이웅재님(발표자료 바로가기)

Javascript는 Type System이 존재하지만 느슨한 타입의 언어이며 Runtime이 아니면 확인하기 힘들었다.

Javascript를 통한 개발 중 본인이 작성 중 발생한 실수(Human Error)를 방지하기 위해 '정적 타이핑' 도입의 필요성이 대두되었다.

Flow, Typescript는 정적 타이핑의 필요성에 의해 대규모 프로젝트들에 도입되기 시작하였다고 한다.


해당 발표에서는 발표자의 팀에서 Javascript로 구현된 프로젝트를 Typescript로 전환한 경험을 소개하였고,

중도 포기하고자 했던 솔직한 마음과, 지치고 힘들었다는 고백을 들으며 안전한 코드를 위한 눈물겨운 삽질의 과정을 나름 느낄 수 있었다.

(Typescript로 전환하며 에러가 2500건 이상이었던 걸로 기억하는데...)



Chromium / Blink 동작 - 모던 브라우저는 어떻게 동작하는가? - 방진호님(발표자료 바로가기)

Chromium은 크롬 브라우저의 오픈소스를 말하는데, 여러 브라우저를 비롯한 플랫폼에서 사용되고 있다.

해당 발표에서는 브라우저의 내부 동작 원리를 설명하고 성능을 개선하기 위해 노력하였던 과정이 설명되었다.


Chrome은 Multi-process를 사용하고 있다.

Crash가 발생해도 죽지 않으며, 메모리가 분리되어있기 때문에 피싱 사이트에 유저들이 유입 시에도 공격이 차단되는 특징이 소개되었다.


Chrome은 Rendering Engine 인 Blink, V8, Skia 세 가지 엔진으로 이루어져 있다.
브라우저 내부에서는 'Parsing' -> 'Style' -> 'Layout' -> 'Layerization' -> 'Paint' 과정을 거쳐서 화면을 보여준다고 한다.
간단하게 DOM 형식으로 구성된 코드를 파싱하게 되고, 
실제로 브라우저에서 보여줄 Object를 결정한 뒤 Graphic Engine인 Skia를 통해 그리는 과정을 알 수 있었다.
자세한 원리는 하위 주소를 참고하길 바란다.
(브라우저는 어떻게 동작 원리 링크 : https://d2.naver.com/helloworld/59361)

이외에도 Main Thread에서 이루어지던 렌더링 처리를 Sub Thread로 분산시켜 성능을 개선한 Chrome의 노력을 들을 수 있었다.






'잡동사니 > - 후기' 카테고리의 다른 글

글쓰는 개발자 세미나 후기 (MASOCON 2018)  (0) 2018.12.24