GDG Devfest Songdo 2022 다녀온 후기

GCP와 Flutter, AI에 관한 이야기

11/20/2022, 3:26:51 AM에 LiteHell이(가) 작성
카테고리 : Dev
태그 : FlutterGCPCloud

처음으로 가보는 GDG Devfest

2022년 11월 19일 인천 스파크업파크에서 열린 GDG Devfest 2022에 참가했다. 스파크업파크 건물은 규모가 꽤 크고 내부도 괜찮았다. 주변에 지하철역(인천대입구역)과 버스역이 있어서 오는 데 큰 불편함은 없었다.

GDG Songdo Devfest에서는 Flutter, Server/ML, Android에 관한 여러 세션이 열렸다, 그리고 발표장소가 총 3군데가 있어 세 세션이 동시에 진행됐다. 그래서 시간이 겹쳐 몇몇 세션을 듣지 못한 것은 아쉬웠다.

이번 Devfest에서는 Androiod/AR분야 세션이 열렸지만, 친구랑 같이 듣다보니 해당 분야의 세션은 듣지 않았다. 대신 Flutter나 GCP, AI 분야의 세션을 들었다. 너무 깊게 들어가는 수준으로 발표가 이루어지진 않아서, 듣는 데 큰 불편함은 없었다.

GCP와 온프레미스 이야기

첫번째부터 세번째까지 GCP와 온프레미스 운영에 관한 세션을 들었다. 발표장소가 모두 다 똑같아서 약간 편했다.

첫번째 세션 — GCP의 새로운 기능 소개

첫번째 세션에서는 GCP에서 새로 출시된 기능들을 소개해줬는데, 이중에서 Document AI와 Translation Hub기능이 인상적이었다. Document AI에서는 문서 인식 기능이, Translation Hub에서는 자동 번역 성능이 인상적이었다. Document AI 기능을 보면서 정형화된 문서(예시를 들자면 택배송장)에 OCR을 적극적으로 실시하는 기업이라면 좋을 것 같다는 생각이 들었다. 그리고 이 세션에서는 GCP 외에도 Google Workspaces의 새로운 변경사항도 소개해줬는데, 이 사항들은 굳이 개발자가 아니더라도 Google Workspaces를 적극적으로 활용하는 사람들이라면 꽤 흥미롭게 들을 수 있을 것 같았다.

두번째 세션 — 누가 요즘 서비스 키 쓰나요?

두 번째 세션은 "GCP 조금 더 안전하게 사용하기 (feat. AWS)" 가 주제였다. 나는 처음에 여기서 "안전하게"를 비용적 측면에서 "안전하게"라는 뜻으로 이해했었다. 그래서 GCP의 예산상한을 설정하는 방법과 같은 내용을 예상했었는데, 실제 내용을 들어보니 GCP를 보안적 측면에서 "안전하게" 사용하는 방법이었다. 그래서 발표를 듣는 초반에 잠깐 당황했었다.

이 세션의 내용은 GCP Service account key의 단점을 이야기하고 이에 대한 해결책으로 GCP Workload Identity Federation을 제시하는 내용이다. 타 클라우드나 온프레미스 환경에서 GCP 서비스에 접근할 때 일반적으로 GCP Service account key를 이용한다. 하지만 이 account key는 유출되면 큰 보안적 risk가 발생하고, 관리자의 귀찮음으로 rotation이 주기적으로 이루어지지 않으며, 보관이나 관리가 부담스럽다는 단점이 있다.

그래서 발표자는 이에 대한 대안으로 GCP Workload Identity Federation을 소개한다. GCP Workload Identity Federation은 AWS나 OIDC 혹은 SAML 2.0을 지원하는 외부 ID 제공자의 외부 ID에 GCP의 IAM 역할을 부여하는 방식이다. 즉, AWS의 람다나 ec2 인스턴스등에 GCP의 IAM 역할을 부여할 수 있다.

그러므로 이 기능을 이용하면 AWS 등의 외부환경에서 서비스 키를 이용하지 않고 GCP로부터 토큰을 발급받아 GCP에 서비스 계정으로서 접근할 수 있다. 따라서 관련 config가 유출돼도 사전에 설정된 AWS의 람다나 ec2 인스턴스등이 아니라면 인증이 불가능하므로, config가 유출돼도 큰 타격을 받지 않는다. 또한 토큰의 유효기간도 짧으므로 기존의 Servie account key 방식보다 매우 안전하다.

다만 이 기능이 아직 AWS의 EKS IRSA를 지원하지 않는다는 것이 단점이다. 발표자는 이에 대해 임시적인 해결책을 제시했지만, 이를 해결하는 PR이 관련 SDK에 제출됐다고 하니, 시간이 지나면 결국 해결될 것이다.

Q&A 시간에 해당 기능의 예산 설정이 가능하나는 질문이 나왔다. 발표자는 이에 그건 안되고 추가적인 개발이 필요할 것이라고 답변했는데, 이 점은 약간 아쉬웠다.

세번째 세션 — 온프로미스 고군분투, 해보았습니다.

세번째 세션은 B2B 스타트업 기업에서 온프로미스 개발을 한 이야기이다. 처음부터 끝까지 문제해결을 위해 고군분투한 이야기라서 매우 재밌게 들었다.

발표자분은 스타트업에서 개발 일정을 단축하기 위해 DevOps를 알아보았다, 이 분은 개발자였기에 DevOps 중에서 CI/CD 기술에 가장 관심이 많았다.

그래서 개발하는 제품에 CI/CD 적용을 시도했다. 그러나 막상 해보려니 잘 안됐다. 그래서 이를 해결하기 위해 레거시 등 여러가지를 수정하게 되고, 그러다보니 안정성이 확보되어 납품이 늘어났다. 근데 납품이 늘어나니 또 고객사마다 환경이 달라지는 문제가 발생했다, 고객사에서 마음대로 수정을 하는 사태가 벌어진 것이다.

이러한 사태를 방지하게 위해 아예 제품을 Docker로 컨테이너화하게 됐다. 근데 그러다보니 납품할때마다 APT니 Python이니 Yarn이니 Docker니 이런 것들을 직접 손으로 설치하는 게 귀찮아졌다.

매번 납품할때마다 직접 손으로 쉘 명령어 두들기며 설치하는 건 너무 귀찮지 않은가? 그래서 이에 대한 해결책으로 처음에 스크립트화를 생각했다. 그런데 막상 스크립트화하려니 if문을 너무 많이 써야했다. 즉, 스크립트를 작성하는 게 좀 많이 귀찮았다. 그래서 발표자분은 이런 생각이 들었다: '이걸 해야해?'. 이런 걸 자동으로 하는 툴이 있지 않을까? 있다. 발표자분은 스크립트를 직접 작성하지 않고 Ansible이라는 자동화 툴을 채택했다. 많은 사람들이 쓰는 툴이고, 멱등성이 보장되며, yaml으로 쉽게 작성할 수 있는 점, 그리고 자료를 쉽게 찾을 수 있는 점을 고려해 해당 툴을 선택했다고 한다.

설치의 귀찮음은 해결됐다, 하지만 문제가 하나 해결되면 또 새로운 문제가 생기는 법 아니겠는가? 고객사에서 새로운 요청사항이 들어왔다: 서버 여러대 쓰면서 관리 가능한가요?. 문제를 해결해야 한다. 문제에 대한 해답은? 예상하셨다시피 Kubernetes.

발표자분은 처음에 Kubernetes가 소 잡는 칼이 아닐까하는 걱정을 했었다. 그런데 막상 써보니 소 잡는 칼이 아닌 만능 기관총이었다. 그래서 많이 좋았다고 한다. 그러나 Kubernetes를 쓰니 manifest 문제와 Kubernetes 설치의 귀찮음, local-path-porivder 문제가 생겼다.

발표자는 이 문제들을 Helm, Kuberspray로 해결했다. 특히 Kuberspray가 Ansible 기반이라서 조합이 매우 환상적이었다. 그리고 local-path-provider 문제는 RockCeph로 해결했다고 한다.

Infra as Code

인프라를 Yaml 파일들과 코드로 관리하다 보면 고객사별로 여러 차이가 생기는 데 이에 대해 Git Branch로 관리했다고 한다. Dev, Alpha, Beta, Release등의 브랜치를 만들고, 그 맨 위에 납품사별 브랜치를 만들어서 merge하는 식으로 했다고 한다.

Flutter와 AI 이야기

네번째 세션부터는 Flutter와 AI 관련 세션을 들었다. 재밌는 것도 있고 그냥 그랬던 것도 있다.

네번째 세션 — Flutter 환경에서 테스트하기

네번째 세션은 Flutter 환경에서 테스트하는 이야기로, Blackbox testing/Whitebox testing의 개념, 그리고 Unit testing/Widget testing/Integration testing의 개념을 설명하고 Flutter에서의 테스트 방법을 설명한 뒤, 멀티 플랫폼 환경에서의 Flutter 앱 테스트 방법을 설명하는 세션이다.

들으면서 느낀 것은, Dart 테스트 라이브러리가 다른 언어의 유명한 라이브러리랑 사용법이 굉장히 유사해서 꽤 친숙하게 느껴졌다는 점, 그리고 Flutter의 Widget testing 관련 라이브러리가 꽤 잘 짜여져있다는 점이였다.

그리고 발표 마지막에 소개한 Recording 테스트 기법과 AI Testing 테스트 기법이 인상적이었다. 리코딩 기법은 앱 이용(탭이라던지 스크롤 등)을 기록한 뒤 이를 다른 기기들에서 똑같이 하는 기법인데, 들으면서 매크로 생각이 났다. 그리고 AI Testing 기법은 말 그대로 인공지능으로 테스트하는 기법이다. 인공지능이 확실히 많이 발달한 게 느껴진다.

다섯번째/여섯번째 세션 - AI, Deno

다섯번째와 여섯번째 세션은 각각 Stable Diffusion과 초해상도 이미지 복원에 관한 이야기이다. Diffusion 모델에 관한 간략한 설명을 듣고 해상도 향상 AI에 관해 들었다. Text-to-Image AI에 넣을 prompt 파는 사이트가 있다고 해서 좀 많이 놀랐다. 그것 말고는 딱히 할 말이 없다... AI 돌아가는 거 보면 신기하긴 하더라. 필자가 AI에 대해 잘 아는 편이 아닌지라, 수학적이거나 학문적인 내용이 나오면 그냥 그렇구나하면서 들었던 것 같다.

마지막 AI세션 끝나고 종료식 장소로 이동해서 Deno 세션을 잠깐 들었는데 이것도 잠깐이었지만 재밌었다. Deno deploy가 생각외로 빠르다는 점과 Deno Fresh 프레임워크에 관한 내용 등이 인상적이었다.

행사 종료식

아무리도 13시부터 20시까지 하는 행사다보니 사람들이 중간에 많이 빠져나갔다. 그래서 경품 당첨확률이 매우 높았는데, 그럼에도 불구하고 난 한 번도 당첨이 안 됐다. 아무래도 난 운이 없나보다.

전체적인 후기

전체적으로 재밌는 내용이 많았다. 서두에서 말했듯 전체적으로 얕은 수준의 발표들이라서 이해하는 데 큰 어려움은 없었다. 다만 AI 관련 세션은 내용을 얕게는 이해했지만 그 외에는 학문적인 내용이라서 완벽하게 이해하진 못했다. 개인적으로 Deno를 이용해서 한 번 어플리케이션을 개발해보면 괜찮겠다는 생각이 들었다.

가기 편한 곳에서 개발자행사가 열리니 참석하기 편했다. 앞으로도 가기 편한 곳에서 개발자행사가 자주 열렸으면 좋겠다.