반응형

1. 딥러닝이 가져온 AI의 변화

ChatGPT가 쏘아올린 AI의 열기가 뜨겁습니다.

과거에도 AI에 대한 관심이 높아졌던 시기가 여러번 있었습니다. 하지만 이러한 관심은 독감처럼 잠시 유행하다 지나가 버리곤 했습니다. 사람들이 갖고 있는 AI에 대한 기대치가 너무 높았던 것 일까요? 번번히 AI는 그것에 못미치는 성과를 보여주며 실망을 안겨주었습니다.
그러던 중 "딥마인드"라는 영국의 AI 회사에서 개발한 "알파고"가 등장 하였습니다. 알파고는 "이세돌"이라는 바둑계의 젊은 영웅을 4:1로 무찌르면서 엄청난 이슈가 되었습니다. 알파고는 딥러닝이라는 새로운 알고리즘으로 무장하고 인간 바둑계의 무림을 평정한 것이었죠. 그러나 사람들은 바둑이라는 한정된 카테고리이기 때문에 가능할 것이라고 생각 했습니다. 아직까지도 AI가 사람처럼 생각하고 상황에 적절한 답을 주는 것은 어려웠기 때문이었습니다.
그러나 최근 등장한 ChatGPT는 달랐습니다.
이 서비스가 보여주는 답변은 놀라움 그 자체였습니다. 일상의 대화에서 부터 시작해 다양한 분야의 깊이 있는 질문에도 양질의 답변을 내놓습니다. 심지어 철학적인 질문에도 답변을 내어 놓습니다.
ChatGPT에게 "삶의 의미는 무엇일까?"라는 질문을 한번 해보았습니다.
ChatGPT가 내놓은 삶의 의미에 대한 답변
초기 AI는 Rule 기반의 프로그램이었습니다. 하지만 사람이 모든 Rule을 만들수 없다는 한계가 있습니다. 이를 극복하기 위해 사람의 뇌를 흉내낸 인공 신경망이 나오게 되고, 이제 컴퓨터가 스스로 학습을 할 수 있는 환경이 만들어지게 되었습니다.
거기에 하드웨어의 발달, GPU와 같은 고속 컴퓨팅 기술의 발전이 더해짐으로 인해 AI의 처리 속도가 빨라지게 되었습니다.
ChatGPT는 초거대 언어 모델의 AI 챗봇입니다. 이는 최신 딥러닝 기술과 고속 컴퓨팅, 그리고 거대 자본을 등에 업고 탄생한 것입니다. 이제 AI는 단순한 유행이 아닌 새로운 시대의 혁명이 될 수 있는 여건이 마련된 것입니다.
 

2. AI의 발전이 가져올 개발자 세계의 변화

이런 AI의 발전이 개발자의 삶에는 어떠한 영향을 미칠까요?
이미 프로그래밍 분야에서도 AI를 이용한 기술의 발전이 있었고 대중화 되기 시작했습니다.
ChatGPT에게도 아래와 같이 코드를 요청할 수 있습니다.

ChatGPT가 만든 코드

Github의 Copilot을 이용하면 내가 작성하고 있는 코드의 맥락을 이해하고 다음 코드를 자동으로 추천해줍니다.
(copilot은 월1만원의 유료서비스입니다) 개발자는 추천 코드가 맞다면 tab키를 눌러 코드를 완성할 수 있고, 다른 추천 코드를 요청할 수도 있습니다. 이런 서비스를 이용하게되면 개발자가 실제로 코딩하는 양이 획기적으로 줄어들게 됩니다.
아래는 Copilot이 코드를 추천해 주는 모습입니다.
Copilot의 코드 추천 기능
이 두가지 서비스(ChatGPT, Copilot) 모두 OpenAI에서 개발한 서비스입니다.
이렇게 개발이 자동화 되면 우리는 좀 더 고차원적인 일을 할 수 있게 됩니다. 대신 우리는 AI에게 일을 시킬수 있는 능력이 필요합니다. 당연히 일을 잘 시키기 위해서는 AI를 잘 이해하는 High Performer가 되어야겠죠.
결국 미래에는 AI를 잘 이해하고 사용하는 개발자가 살아 남을 수 밖에 없을 것입니다.
우리가 학자들처럼 AI의 모든 논문을 이해하고 연구할 필요는 없습니다. 새로운 이론과 기술이 나오고 약간의 시간이 지나면 대중화되는 단계가 오게 됩니다. 우리는 이걸 잘 이용할 수 있으면 되는 것입니다.
2010년경 모바일로 전환되는 시기에 기회가 왔던것 처럼, 어쩌면 지금이 AI로 전환하는 최적의 시기이고 개발자에게는 또다른 기회가 될 것입니다.

이런 기회를 놓치지 않으시길 바랍니다.

반응형
반응형

당신은 다른 사람의 성공에 기여한 적 있는가?

마이크로소프트 글로벌인플루언서팀 리전매니저로 일하고 있는 이소영씨가 쓴 책.
애플, 구글, 아마존등이 엄청난 성과를 이어가는 10년이 넘는 세월 동안 마이크로소프트는 오랜 침체를 겪었습니다.
똑똑한 직원들을 뽑아 서로 총질을 시킨다는 그림이 유명해질 정도로 내부에서는 경쟁이치열했습니다.

3대 CEO로 인도 출신 사티아 나델라가 부임한 후 마이크로소프트는 새로운 전성기를 누리게 됩니다.
마이크로소프트의 변화는 내부에서 시작되어야 한다고 생각한 사티아는 직원 평가에 있어서 다음과 같은 변화를 주었습니다.

 

"나는 다른 사람의 성공에 어떻게 기여 했나?"라는 평가 항목이 새롭게 생긴것입니다.
이전까지는 개인의 성장만이 관심사였다고 한다면, 이제는 내가 다른 사람의 성공을 위해 어떤 기여를 했는가도 중요한 관심이 된것이죠.
이 질문은 서로를 경쟁의 관계에서 파트너십의 관계로 이끌게 되었고, 마이크로소프트 변화에 큰 역할을 했다는 평가입니다.

 

다음은 마이크로소프트의 커리어 관리를 위한 트레이닝 중 하나입니다.
3시간이 넘는 트레이닝의 대부분이 질문과 오픈 답변으로 이루어진다고 합니다. 
하나하나가 깊이 있는 성찰을 끌어내는 질문들이니 천천히 생각해보시면 좋을것 같습니다. 
  1. Your big why(일의 목적): 지금 하고 있는 일을 왜 하고 있나요?
  2. Ideal professional self(이상적인 모습): 자신의 어떤 모습을 보고 싶은가요?
  3. Top strengths(자신의 장점): 당신이 가장 잘하는 것은 무엇인가요?
  4. Desired strengths(미래 비전): 미래에 무엇을 더 잘하기를 원하나요?
  5. Career goals(커리어 목표): 짧은 혹은 긴 기간 동안 성취하고 싶은 것은 무엇인가요?
  6. Current job and role(현재의 업무): 지금 맡은 업무를 위해 무엇을 하고 있나요?
  7. Core values(핵심 가치): 절대 양보할 수 없는 가치는 무엇인가요?
  8. Role modles(롤모델): 가장 선망하는 사람은 누구인가요?
  9. Contributions(기여 부분): 당신이 기여할 수 있는 것은 무엇인가요?
  10. Limits and boundaries(한계와 경계): 당신이 하고 싶지 않은 것은 무엇인가요?
 
이 책은 이러한 마이크로소프트의 변화와 그 변화의 중심에는 좋은 파트너십이 반드시 필요하다는 작가의 이야기들이 담겨 있습니다.
그리고, 여러 인플루언서들의 사례를 통해 우리 생활속에서 파트너십이 갖는 가치에 대해 설명하고 있습니다.
 
당신은 어떤 관계들을 맺고 있나요?
이런 질문에 대해 다시 생각해 볼수 있게 하는 책이었습니다.
반응형
반응형

이토록 평범한 미래

오랜만에 소설책을 한권 읽었다. SNS에서 너무나도 많이 추천되고 있는 김연수 작가의 "이토록 평범한 미래".

 

김연수 작가의 8개 단편집을 묶은 소설집이다.
 
작가 특유의 느낌이 좋은 글이다. 약간 우울하기도 하지만 따스한 온기를 느낄 수 있다.
8개의 단편중 첫번째 작품의 제목이 "이토록 평범한 미래"이다.
그해 여름 자살을 꿈꾸는 지민, 그녀의 엄마는 작가였지만 일찍 세상을 떠났다.
유일한 작품의 제목은 "재와 먼지".
 
이 책은 "1972년 10월이 시간의 끝이다"라는 단 한문장 때문에 유신정권에 의해 출판 금지를 겪게 된다.
1972년 10월은 박정희 대통령에 의해 국회가 해산되고 헌법의 효력이 정지되는 유신이 발표된 때였던 것이다.
책의 내용은 동반자살을 한 연인이 죽지않고 미래에서 과거로 진행되는 새로운 인생을 살게된다는 내용이다.
처음 만났던 순간 그토록 설레고 기쁜 마음의 순간으로... 그리고 그 시간 후 다시 정상적인 시간의 흐름으로 세번째 삶을 살게 된다.
우리는 과거의 아름다웠던 기억들을 대부분 잊고 살아간다. 그 순간의 설레이고 소중한 감정들을 망각한채...
 
김연수 작가의 아름다운 표현들도 책을 읽는 즐거움을 더해준다.
  • 군락을 이룬 황하 코스모스가 일제히 한쪽으로 몸을 수그렸고...
  • 울음의 주도권은 울음이 쥐고 있었다.

 

작가는 후기에서 어떤 글을 쓰고 싶었냐는 질문에 다음과 같이 답한다.
메리 올리버는 "골든 로드"라는 시에서 "빛으로 가득 찬 이 몸들보다 나은 곳이 있을까?"라고 썼다.
이 경이로운 문장 이전에 무슨 일이 있었는지 나는 잘 알게 됐다. 직전의 시구는 다음과 같다.
"우리의 삶이라는 힘든 노동은 / 어두운 시간들로 가득하지 않아?"
'어두운 시간'이 '빛으로 가득찬 이 몸'을 만든다.
지금 내가 쓰고 싶은 이야기도 이런 것이다. 그리고 이 이야기들은 언제가 우리의 삶이 될 것이다.

 

이 작품에서는 쓸쓸함과 아련함이 느껴진다.
사랑에 대한 이야기들, 어쩌면 다른 말로는 쓸쓸함이라고 표현할 수 있지 않을까?
누구나 마음 한편에 품고 사는...
반응형
반응형

다음은 이 글의 동영상 버전입니다.

https://youtu.be/Geq3EUkzPuc 

 
우리 팀이 높은 성과를 내는 조직이 되기 위해서 가장 필요한 것은 무엇일까요?
 
회사가 성장하면서 끊임없이 하게 되는 질문입니다.
지난주 Accelerate 디지털 트랜스포메이션 엔진 이라는 책을 읽으며,
기존에 생각하고 있던 개발프로세스 개선과 새로운 영감들을 많이 정리할 수 있었습니다.
 
연구에 의하면 고성과 팀은 저성과 팀에 비해 다음과 같은 차이를 보였다고 합니다.
  • 46배나 더 자주 코드를 배포했다.
  • 계획에서 배포까지의 리드타임이 440배 빨랐다.
  • 다운타임에서 회복하는 평균시간이 170배 빨랐다.
  • 변화 실패율이 5배나 낮았다. 즉, 변화에 실패할 확률이 1/5이다.
 
그렇다면 고성과 팀이 되는데 가장 큰 영향을 미치는 것은 무엇일까요?
 
책에서 말하는 결론은,
Software delivery performance 즉, 전달 성과가 조직의 성과에 가장 큰 영향을 미친다고 합니다.
 
이 책은 DevOps 전문가인 Nicole Frosgren, Jez Humble, Gene Kim이 고성과 IT 조직에 대한 연구를 기록한 글입니다.
영문판의 제목은 Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations 입니다. 제목에서 처럼 Lean Software와 DevOps에 대한 내용을 주로 다루고 있습니다.
 
조직의 성과에 가장 큰 영향을 미치는 Software delivery performance를 높이기 위해서는 어떤 역량들이 필요할까요?
책에서는 여러가지 역량들을 소개하고 있고, 그것들은 다음과 같이 5가지 범주로 나눌 수 있었습니다.
  • Continuous Delivery (CD, 지속적 전달)
  • Architecture (아키텍처)
  • Product & Process (제품 및 프로세스)
  • Lean Management & Monitoring (린 관리 및 모니터링)
  • Culture (문화)
각 항목들의 세부사항들을 정리하면 다음과 같습니다.
 

Continuous Delivery (CD, 지속적 전달)

Continuous Delivery는 소프트웨어 Release를 자동화 하는 것을 의미합니다.
  • Version Control (버전 컨트롤)
  • 배포 프로세스 자동화
  • Continuous Integration (CI, 지속적 통합)
  • Trunk 기반의 개발
  • 테스트 자동화
  • 테스트 데이터 관리
  • 보안 통합
  • Continuous Delivery(CD, 지속적 전달)

Architecture (아키텍처)

  • Loosely Coupled
  • 권한이 부여된 팀

Product & Process (제품 및 프로세스)

  • 고객의 피드백을 수집하고 구현
  • 작업 흐름의 시각화
  • 소규모 배치
  • 팀 실험의 활성화

Lean Management & Monitoring (린 관리 및 모니터링)

  • 변경 승인 프로세스 간소화
  • 애플리케이션 & 인프라 모니터링
  • 시스템 상태를 사전에 예방
  • 프로세스를 개선하고 WIP를 제한
  • 품질 및 작업을 시각화

Culture (문화)

  • 학습을 장려
  • 팀 간 협업을 지원하고 촉진
  • 작업을 의미 있게 만드는 자원과 도구를 제공
  • 트랜스포메이션 리더십을 지원
 
책에서 소개한 내용들 중 우리 환경에 필요하고 맞는 부분을 찾아 잘 적용하면, 개발 Performance, 품질, 보안등 많은 부분에 큰 효과가 있을 것 같습니다.
이렇게 프로세스를 잘 다듬는다면, 시스템 개발과 운영에 더 효율적이고, 스트레스를 덜 받는 개발자의 복지가 될 수 있지 않을까요?
관심 있으신 분들은 꼭 한번 읽어 보시길 추천드립니다.

반응형
반응형

다음은 이 글의 동영상 강좌입니다.

https://youtu.be/Dr4OXDLGsmI

Nestjs 프로젝트를 Docker화 하면 Application을 손쉽게 배포할 수 있습니다.

 

Docker가 설치된 서버에 docker로 빌드된 이미지만 업로드 하고 실행하면 됩니다.

github actions, aws pipeline등을 사용하면 모든 배포 단계를 자동화 할 수 있습니다.

이런 자동화를 통해 프로젝트의 생산성을 획기적으로 높일 수 있고,
개발자를 배포의 늪에서 해방 시켜 업무의 만족도를 높일 수 있습니다.

 

사전 설치 프로그램

우선 다음 프로그램을 설치합니다.

  • Nodejs
  • Docker
  • Nestjs를 사용하기 위해 nest cli를 설치합니다.
npm i -g @nestjs/cli

 

프로젝트 생성 및 실행

Nestjs 프로젝트를 생성합니다.

nest new nest-docker

 

프로젝트를 실행합니다.

npm start

 

Dockerfile / .dockerignore 파일 작성

프로젝트 root 폴더에 "Dockerfile" 파일을 생성합니다.

  • docker image 빌드시 사용하는 설계도입니다.
FROM node:18
RUN mkdir -p /var/app
WORKDIR /var/app
COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
CMD [ "node", "dist/main.js" ]

프로젝트 root 폴더에 ".dockerignore" 파일을 생성합니다.

  • container에 불필요한 파일들이 복제되는 것을 막기 위한 용도입니다.
.git
*Dockerfile*
node_modules

 

Docker 이미지 생성

다음 명령으로 docker 이미지를 생성합니다.

docker build . -t nest-docker

 

Docker 실행

다음 명령으로 docker를 실행합니다.

docker container run -d -p 3000:3000 nest-docker

 

브라우저에서 확인해보기

브라우저에서 다음 url을 입력하여 확인합니다.

http://localhost:3000

다음과 같이 결과를 확인할 수 있습니다.

 

반응형

+ Recent posts