qkrtkdwns3410

인천 송도 GDG DEV FEST 후기

개발컨퍼런스GDG인천송도
2 days ago
·
11 min read

2607

2609

인천 송도 GDG 송도 DEV FEST 후기

  • 전날부터 눈이 조금씩 오기도하고.. 상당히 추웠습니다

  • 서울에서 인천까지 가느라고 조금 고생했었습니다 ㅠㅠ

  • 커피 없었으면 졸았을거같네요 ㅋㅋ

개요

  • 일단 세션은 1 20 ~ 부터 약 6시까지 였습니다

  • 중간중간에 멘토링 관련한 세션도 있고, 그냥 개발자 성장, 혹은 자사 제품에 대한 소개류..? 비슷한게 좀 껴있었던거 같습니다.

  • 생각외로 학생들도 좀 있었던거같네요

2610
  • 세션은 위와 같은 식으로 진행되었습니다.

  • 저는 백엔드이기에 백엔드 관련된 내용을 들었으며

  • 세션1

    • 양수열 이사님의 컨테이너 최적화 자바 어플

  • 세션2

    • MS advocate 유저스틴님의 Dockerfile 없이 컨테이너 이미지 만들기

  • 세션3

    • 서준수님의 개발자 성장관련

  • 세션 4

    • 송수혁님의 스프링 시큐리티 로그인 관련 적용기였습니다.

일단 들어가기전 총평

  • 대략적으로 기술적인 내용은 조금 아쉬웠습니다

  • 사실 정보 전달 등의 내용이 들어가긴하였지만

  • 자사 제품

    • 오라클이면 오라클 Graalvm (물론 그랄 vm 이 다른 JDK 보다 성능이 좋다는 것은 알고 있긴합니다)

    • ms .NET Asprire 같은 제품 홍보..? 같은 느낌이 많이 들었습니다.

  • 개발자 성장과 관련된 내용을 흥미로웠던거같습니다

    • 평소에도 성장에 대해 많이 고민한 적이 많아서 스스로 반성도 많이 했습니다..

  • 또 .. 스프링 시큐리티 관련 내용 발표가 있었는데

    • 시큐리티는 평소에 보지 않으면 이해하기 어려운 부분이 좀 있어서

    • 시큐리티를 잘 알고 봤으면 재밌게 봤을거 같습니다.


  • 아래 내용은 컨퍼런스에 메모했던것을 GPT 로 갈고닦은 내용입니다.

세션 1 : 컨테이너 친화적인 자바 어플리케이션

자바와 컨테이너의 관계

자바와 컨테이너 구조

  • 컨테이너 기반 환경에서 자바 어플리케이션을 사용하는게 쉬운일이 아님

  • 자바는 초기에 컨테이너나 클라우드 환경을 고려해 설계된 언어가 아님..

  • AWS Lambda 와 같은 서버리스 환경의 경우 컨테이너를 기반으로 동작하는데, 요청이 들어올 때만 컨테이너가 실행됨.

    • 컨테이너 구동 속도어플리케이션의 시작 시간 은 매우 중요함.'

해결책으로 GraalVM 제시

  • 그랄 VM 은 컨테이너 환경에서 자바의 성능으 최적화하는 데 중요한 도구

  • JIT 컴파일러를 포함하고 AOT 네이티브 컴파일을 통해 더 빠른 실행 속도를 제공

GraalVM 특징

  1. 고성능 자바

    • 기존 자바보다 GC 시간 25% 감소

    • 트위터에서는 그랄을 사용해 서버 리드 타임 20% 줄이고, 전체 서버 중 20% 제거해도 문제없이 구동할 수 있는 수준으로 최적화됨.

  2. 다중 언어 가상머신

    • JVM 위에서 Js, Python 등의 언어도 지원한다

    • "Write Once, Run Anywhrer" 철학을 바탕

    • 다양한 언어를 하나의 플랫폼에서 실행한다.

  3. AOT 네이티브 컴파일러

    • GraalVM은 AOT 컴파일러를 통해 실행 시간을 획기적으로 단축시킴

    • GraalVM 으로 패키징하면 48ms

    • 일반 자바 어플리케이션의 600ms 에 비해 훨씬 빠르다.

JIT와 네이티브 이미지의 비교

  • JIT 컴파일: 기존 자바 애플리케이션에서 사용하는 방식으로, 실행 시점에 코드를 컴파일합니다.

  • 네이티브 이미지: GraalVM AOT 컴파일러를 사용해 생성된 실행 파일로, 시작 속도와 메모리 사용량에서 큰 이점을 제공합니다.

컨테이너 환경에서의 차이점

  • 일반 JAR 파일 크기: 약 383MB

  • 네이티브 이미지 크기: 약 5MB
    작은 컨테이너 이미지가 필요한 환경에서는 네이티브 이미지가 훨씬 유리합니다.

GraalVM 사용 시 주의점

  1. 빌드 옵션 최적화 필요
    네이티브 이미지를 생성할 때 환경에 맞는 옵션을 조정해야 합니다. 최적화 설정이 제대로 이루어지지 않으면 성능이 저하될 수 있습니다.

  2. 커머셜 버전과 일반 버전의 차이
    GraalVM 커머셜 버전은 20여 개의 추가적인 성능 최적화 기능을 제공하지만, 대부분의 경우 일반 버전으로도 충분히 활용 가능합니다.

Session 3: 개발자 성장

1. 메타인지를 통한 성장 마인드셋

메타인지란?

  • 생각에 의한 생각

    • 내가 하는 공부가 효율적인지 판단

    • 개선 방법을 고민

성장 마인드셋

  • 능력과 노력을 통해 성장 가능

  • 학습 압박은 성장 마인드셋 형성에 도움이 될 수 있음

환경에 대한 태도

  • 주어진 환경을 탓하지 말자

    • 회사는 학교가 아니다.

    • 학습 의지가 있는 외부 커뮤니티 활용 가능.

SI는 개발자의 무덤?

  • 제조업과 서비스업의 기술 격차

  • 자기에게 주어진 일을 배우는 것이 중요

    • 이직을 위한 기술적 성장은 개인의 몫

  • 제조업

    • 최신 기술 도입에 보수적

    • 오픈소스 사용 제한

  • 서비스업

    • 본인의 틀 안에서 기술 갈고닦기

작은 노력에서 시작

  • 현재 노력하고 있는 것을 점검하며 환경에서 벗어나는 시도 필요


2. 내적 동기 부여 찾기

실천을 위한 내적 동기

  • 자기결정성 이론

    • 내적 동기 부여

    • 외적 동기 부여: 돈, 칭찬, 긍정적 피드백

헬퍼스 하이

  • 타인은 경쟁자가 아닌 함께 성장하는 동료

    • 오픈소스, 블로그 등 협력 활동

좋은 개발자란?

  • 기술적으로 뛰어난 것만이 답이 아님

    • 소프트 스킬 부족은 팀워크에 악영향

학습과 티칭

  • 가르치는 것은 최고의 학습법

    • 미국 행동 연구소 자료 참고


3. 학습 태도 및 방법

관성을 깨기

  • 기존에 사용하던 방식에 의문 갖기

    • 예: Java 폴더의 존재 이유

    • 스프링부트에 왜 메인 어플리케이션 하나만으로 동작이 가능한걸까? 등..

학습 범위 설정

  • 공부와 가르침 모두 어디까지 할지 기준 설정

피드백과 실수

  • 피드백: 긍정적이든 부정적이든 의연하게 받아들이기

  • 실수는 실패가 아님. 코드 리뷰는 필수

프로젝트와 지식 습득의 균형

  • 학습과 실습의 병행 중요

  • 교차 연습과 주기적인 지식 인출 필요


4. 교육 방식 추천

  1. 코칭 중심 교육

    • 키워드만 던지고 스스로 탐구하게 하기

  2. 피드백 중심 학습


5. 효과적인 학습법

  • 지식 인출

    • 학습한 내용을 주기적으로 복습하며 인지

  • 셀프 교육자가 되기

    • 스스로 성장 가능성을 인지하고 실천







새는 알에서 빠져나오려고 몸부림친다. 알은 세계다. 태어나려고 하는 자는 하나의 세계를 파괴하지 않으면 안 된다. 그 새는 신을 향해 날아간다