인천 송도 GDG DEV FEST 후기
인천 송도 GDG 송도 DEV FEST 후기
전날부터 눈이 조금씩 오기도하고.. 상당히 추웠습니다
서울에서 인천까지 가느라고 조금 고생했었습니다 ㅠㅠ
커피 없었으면 졸았을거같네요 ㅋㅋ
개요
일단 세션은 1 20 ~ 부터 약 6시까지 였습니다
중간중간에 멘토링 관련한 세션도 있고, 그냥 개발자 성장, 혹은 자사 제품에 대한 소개류..? 비슷한게 좀 껴있었던거 같습니다.
생각외로 학생들도 좀 있었던거같네요
세션은 위와 같은 식으로 진행되었습니다.
저는 백엔드이기에 백엔드 관련된 내용을 들었으며
세션1
양수열 이사님의 컨테이너 최적화 자바 어플
세션2
MS advocate 유저스틴님의 Dockerfile 없이 컨테이너 이미지 만들기
세션3
서준수님의 개발자 성장관련
세션 4
송수혁님의 스프링 시큐리티 로그인 관련 적용기였습니다.
일단 들어가기전 총평
대략적으로 기술적인 내용은 조금 아쉬웠습니다
사실 정보 전달 등의 내용이 들어가긴하였지만
자사 제품
오라클이면 오라클 Graalvm (물론 그랄 vm 이 다른 JDK 보다 성능이 좋다는 것은 알고 있긴합니다)
ms .NET Asprire 같은 제품 홍보..? 같은 느낌이 많이 들었습니다.
개발자 성장과 관련된 내용을 흥미로웠던거같습니다
평소에도 성장에 대해 많이 고민한 적이 많아서 스스로 반성도 많이 했습니다..
또 .. 스프링 시큐리티 관련 내용 발표가 있었는데
시큐리티는 평소에 보지 않으면 이해하기 어려운 부분이 좀 있어서
시큐리티를 잘 알고 봤으면 재밌게 봤을거 같습니다.
아래 내용은 컨퍼런스에 메모했던것을 GPT 로 갈고닦은 내용입니다.
세션 1 : 컨테이너 친화적인 자바 어플리케이션
자바와 컨테이너의 관계
자바와 컨테이너 구조
컨테이너 기반 환경에서 자바 어플리케이션을 사용하는게 쉬운일이 아님
자바는 초기에 컨테이너나 클라우드 환경을 고려해 설계된 언어가 아님..
AWS Lambda 와 같은 서버리스 환경의 경우 컨테이너를 기반으로 동작하는데, 요청이 들어올 때만 컨테이너가 실행됨.
컨테이너 구동 속도
와어플리케이션의 시작 시간
은 매우 중요함.'
해결책으로 GraalVM 제시
그랄 VM 은 컨테이너 환경에서 자바의 성능으 최적화하는 데 중요한 도구
JIT 컴파일러를 포함하고 AOT 네이티브 컴파일을 통해 더 빠른 실행 속도를 제공
GraalVM 특징
고성능 자바
기존 자바보다 GC 시간 25% 감소
트위터에서는 그랄을 사용해 서버 리드 타임 20% 줄이고, 전체 서버 중 20% 제거해도 문제없이 구동할 수 있는 수준으로 최적화됨.
다중 언어 가상머신
JVM 위에서 Js, Python 등의 언어도 지원한다
"Write Once, Run Anywhrer" 철학을 바탕
다양한 언어를 하나의 플랫폼에서 실행한다.
AOT 네이티브 컴파일러
GraalVM은 AOT 컴파일러를 통해 실행 시간을 획기적으로 단축시킴
GraalVM 으로 패키징하면 48ms
일반 자바 어플리케이션의 600ms 에 비해 훨씬 빠르다.
JIT와 네이티브 이미지의 비교
JIT 컴파일: 기존 자바 애플리케이션에서 사용하는 방식으로, 실행 시점에 코드를 컴파일합니다.
네이티브 이미지: GraalVM AOT 컴파일러를 사용해 생성된 실행 파일로, 시작 속도와 메모리 사용량에서 큰 이점을 제공합니다.
컨테이너 환경에서의 차이점
일반 JAR 파일 크기: 약 383MB
네이티브 이미지 크기: 약 5MB
작은 컨테이너 이미지가 필요한 환경에서는 네이티브 이미지가 훨씬 유리합니다.
GraalVM 사용 시 주의점
빌드 옵션 최적화 필요
네이티브 이미지를 생성할 때 환경에 맞는 옵션을 조정해야 합니다. 최적화 설정이 제대로 이루어지지 않으면 성능이 저하될 수 있습니다.커머셜 버전과 일반 버전의 차이
GraalVM 커머셜 버전은 20여 개의 추가적인 성능 최적화 기능을 제공하지만, 대부분의 경우 일반 버전으로도 충분히 활용 가능합니다.
Session 3: 개발자 성장
1. 메타인지를 통한 성장 마인드셋
메타인지란?
생각에 의한 생각
내가 하는 공부가 효율적인지 판단
개선 방법을 고민
성장 마인드셋
능력과 노력을 통해 성장 가능
학습 압박은
성장 마인드셋
형성에 도움이 될 수 있음
환경에 대한 태도
주어진 환경을 탓하지 말자
회사는 학교가 아니다.
학습 의지가 있는 외부 커뮤니티 활용 가능.
SI는 개발자의 무덤?
제조업과 서비스업의 기술 격차
자기에게 주어진 일을 배우는 것이 중요
이직을 위한 기술적 성장은 개인의 몫
제조업
최신 기술 도입에 보수적
오픈소스 사용 제한
서비스업
본인의 틀 안에서 기술 갈고닦기
작은 노력에서 시작
현재 노력하고 있는 것을 점검하며 환경에서 벗어나는 시도 필요
2. 내적 동기 부여 찾기
실천을 위한 내적 동기
자기결정성 이론
내적 동기 부여
외적 동기 부여: 돈, 칭찬, 긍정적 피드백
헬퍼스 하이
타인은 경쟁자가 아닌 함께 성장하는 동료
오픈소스, 블로그 등 협력 활동
좋은 개발자란?
기술적으로 뛰어난 것만이 답이 아님
소프트 스킬 부족은 팀워크에 악영향
학습과 티칭
가르치는 것은 최고의 학습법
미국 행동 연구소 자료 참고
3. 학습 태도 및 방법
관성을 깨기
기존에 사용하던 방식에 의문 갖기
예:
Java 폴더의 존재 이유
스프링부트에
왜 메인 어플리케이션 하나만으로 동작이 가능한걸까? 등..
학습 범위 설정
공부와 가르침 모두 어디까지 할지 기준 설정
피드백과 실수
피드백: 긍정적이든 부정적이든 의연하게 받아들이기
실수는 실패가 아님. 코드 리뷰는 필수
프로젝트와 지식 습득의 균형
학습과 실습의 병행 중요
교차 연습과 주기적인 지식 인출 필요
4. 교육 방식 추천
코칭 중심 교육
키워드만 던지고 스스로 탐구하게 하기
피드백 중심 학습
5. 효과적인 학습법
지식 인출
학습한 내용을 주기적으로 복습하며 인지
셀프 교육자가 되기
스스로 성장 가능성을 인지하고 실천