본문 바로가기
회고/aws&docker fastcampus

패스트캠퍼스 챌린지 최종 후기( AWS/Docker 클라우드 )

코동이 2021. 10. 13.

30일동안 패스트캠퍼스 AWS/Docker 클라우드 수업을 완강했습니다 :)

 

 

* 챌린지 신청 이유

 챌린지를 신청한 이유는 혼자서 강의듣고 공부하면 굉장히 지루하고 힘들것이라는 생각에 강력한 동기부여를 주기 위해서였습니다. 아무래도 낯설고 모르는 내용을 혼자서 보면 중간에 집중력도 떨어지고 흥미도 떨어질거라고 생각했습니다. 또, 평소 AWS/DOCKER에 관심이 많았는데 쉽게 접하지 못하는 내용들을 배울 수 있다는 생각이 들었습니다. 그래서 1달동안 강의를 정주행해서 끝내기 위해, 열심히 공부한 내용을 다시 기록하고 돌아보기 위해서 챌린지를 신청했고 매일 꾸준히 학습을 한 결과로 무사히 마칠 수 있었습니다.

 

*  강의 구성

 크게 2파트로  나누어져 있습니다.  [AWS & Docker를 활용한 DevOps 구축]과 [AWS 서버리스 프로젝트] 입니다.

 

 첫번째 파트인 AWS & Docker를 활용한 DevOps 구축에서 DevOps의 전반적인 역할과 아틀라시안의 제품인 JIRA, CONFLUENCE, BITBUCKET, JENKINS 등의 소개와 사용방법을 알 수 있습니다. 또한 S3를 이용한 이미지 업로드 및 카카오 로그인 구현, Docker를 사용하여 배포까지 합니다.

 

 두번째 파트인 AWS 서버리스 프로젝트는 CloudFront, DynamoDB 소개 및 구축이 있습니다. AWS 프로젝트 소개 및 실습을 하며 IAM과 Lambda 함수로 데이터 읽기, 삽입, 패키지 작성, 이미지 만들기 등을 합니다. 마지막으로 어플리케이션 개발로 API Gateway와 GET, POST 싱크 및 Front-end와 연동이 있습니다. s3이미지도 연동하여 보여줍니다.

 

* 배운 내용과 소감

 

1. 협업 툴 사용방법

현재 회사에서 JIRA, CONFLUENCE를 사용중에 있습니다. 그런데, 제가 사용하는 부분이 굉장히 한정적이고 좁은 시야를 가지고 있다는 사실을 깨달았습니다. 기존에 사용하던 방식과 차이도 존재했고, 단순히 나의 일정 단계를 변화시키면서 해결하기에는 많은 기능들과 시너지가 존재했습니다. 영상에서는 직접 일감을 JIRA에 스스로 등록, 관리하는데 회사 내부의 구성에 따라, voc 접수를 받으면 JIRA와 연동을 하여 사용중에 있었습니다. 일감을 등록하고 내용을 설정하는 부분도 전부 관리자가 커스터마이징이 가능하고, 개발단계를 표시하는 항목과 그림조차도 커스터마이징이 됩니다. 무의식에 그냥 사용했지만, 우리 내부 부서에 맞게 추후 필요 기능과 항목들을 업데이트 건의해야겠다는 생각을 했습니다. API 정보를 제공하고 있기 때문에 API로 통신할 수 있다는 사실은 흥미로웠습니다. 일반적으로 UI를 만져서 작업을 하지만, 일감 생성 및 변경을 API로 할 수 있습니다. 이런 방식이 왜 더 필요하냐고 생각될 수 있는데, 이는 다양한 환경에서 코드로 표현하는 개발자의 능력과 스킬을 더욱 키워주는 좋은 경험이라고 생각을 합니다.

 

또한 회사에서 각자 엑셀로 일정을 관리하는 것이 아쉬웠는데, CONFLUENCE로 많은 보드를 활용할 수 있기 때문입니다. 현업과 콜라보로 각 파트의 업무 요구사항과 일정, 공유 내용들을 같이 보드를 활용해서 해결한다면 훨씬 다채롭고 좋은 문서화, 사례를 남길 수 있지 않을까 생각했습니다. 생각보다, 현업들이 IT인원들의 업무분장을 헷갈려해서 일을 요청하거나 분담시키는데 애로사항이 있는 것을 압니다. 문서화를 기반으로 서로의 정보를 좀 더 과감히 공유하고 오픈하면 훨씬 협업 시간을 단축시키고 효율성을 올릴 수 있지 않나 생각합니다.

 

BITBUCKET은 너무 아쉬웠던 것이, 회사에서 GITHUB를 사용하지 않기 때문에 사용할 일이 없습니다. 그런데 이 기능도 충분히 좋은 기능을 가지고 있다는 생각을 했습니다. 아직 구버전인 SVN을 사용하고 있어서 추후 연계해서 사용하면 간편하겠다는 생각을 했습니다. GITHUB를 사용하지 않아 JENKINS에서도 SVN으로 설정하느라 많은 어려움이 있었습니다. 추후에 회사 프로젝트가 업그레이드된다면 다시 한번 볼 생각입니다. 

 

 

2. JENKINS를 이용한 CI/CD

JENKINS를 통해서 서버에 원격으로 접속하지 않고도 버튼 클릭 한번으로 원격에 수정된 파일을 배포할 수 있는 장점이 있습니다. JENKINS는 build 과정을 console로 남겨주며, 버전 이력이 남기 때문에 히스토리 관리에 용이합니다. 만약 사용하지 않고 일일이 수정된 파일을 옮긴다면 오류가 있는지 없는지 확인할 수 없고 이전 내용들을 기록에 남길 수 없습니다. github와 연동하거나 svn과 연동하면 내가 commit했던 내용들도 각 build시마다 기록되기 때문에 검색도 가능합니다. 뿐만 아니라 AWS와 연동하면 TOMCAT도 재시작 할 수 있도록 설정할 수 있습니다. 한마디로, 내가 github로 커밋을 치고, JENKINS에서 버튼 클릭 한번이면 빌드 및 배포와 tomcat 재기동까지 한번에 진행이 가능합니다. 대신, 프로젝트 경로 설정과 각종 라이브러리 설정을 잘 마쳐야 합니다. 개념강의와 실습강의로 처음부터 시스템을 구성하는 내용을 보여주었기 때문에, 차근차근히 배울 수 있었습니다. 이 내용은 개인 프로젝트에서 써먹을 예정입니다.

 

 

3. Docker를 이용한 배포

 AWS에서 Docker를 설치하고, terminal에서 이미지 빌드 및 실행과 내부에서 RDS 접속까지 해보았습니다. Docker를 이전에 한번 사용해보았지만, 제대로 기록하지 않아서 많이 애를 먹었는데, 이번 기회에 다시한번 명령어와 실행 순서를 알 수 있었습니다. 특히 build는 이미지, run은 컨테이너 생성 및 실행, exec는 컨테이너에 접속이라는 간단하면서도 핵심적인 내용이 머리에 딱 박혔습니다. 이전에 따라치기만 했던 명령어들이 가지고 있는 의미를 확실히 알고나서는 어느 상황에 어떤 명령어가 필요하겠다, 이 명령어는 어떠한 역할을 하겠다는 대랴적인 그림을 그릴 수 있었습니다. Docker를 통해 불필요한 작업들을 간소화 시켜서 다양한 라이브러리와 필요한 파일들을 도커 이미지를 통해서 해결할 수 있습니다. 현재 AWS에서 구성을 했었는데 로컬에서도 도전해 볼 생각입니다.

 

4. 카카오 로그인 구현하기

 API를 이용한 카카오 로그인을 공부했습니다. 실제 카카오 API를 이용해 본 적이 없었는데 강의를 통해 간접 구축을 할 수 있었습니다. 카카오에 가서 key를 발급받고 정해진 API 규칙에 따라서 규칙을 정해 코딩을 하여 연동했습니다. 시큐리티와 관련하지는 않았으나, 추후 시큐리티를 이용한 로그인방식에 카카오 로그인을 추가한다면 커스터마이징이 필요할 것으로 예상합니다. 카카오 로그인을 해보니 네이버로그인이나 구글 로그인도 시도해보고 싶은 생각이 들었습니다.

 

5. S3 이미지 업로드

 버킷을 생성하고, 사용자를 추가하며 IAM으로 권한을 넣어주고 s3 이미지 업로드를 해보았습니다. 비용이 발생한다는 면에서 간단한 실습을 하고 끝냈었는데, AWS에서 이미지를 관리할 수 있다는 점이 신기했습니다. 평소에 이미지는 서버의 특정 위치에 파일을 보관하도록 했었는데, AWS는 이미지 전용 공간이 따로 있기 때문에 관리가 수월합니다. 또한 내부에 디렉터리 형식으로 되어 있지만 사실 모두 같은 깊이에서 파일들이 존재한다는 사실을 알았습니다. 혹여나 나중에 디렉터리 구조로 인식하고 파일을 저장하지 않도록 유의해야 합니다. 직접 정적 주소로 이미지를 들어가서 확인할 수도 있었고 해당 경로를 프로젝트에 적용해서 만들어둔 홈페이지에 이미지로 띄울 수도 있었습니다. 각 종류별로, 카테고리별로 폴더를 만들어서 관리해야하는데 파일 이미지명도 다른 파일 이미지명과 겹치지 않도록 유의해서 설계해야합니다.

 

6. Lambda 함수

Lambda 함수의 데이터 읽기, 삽입, 레이어 생성 등을 했습니다. AWS라고 설정만 체크해주는 것이 아니라 상화에 맞는 코딩을 해주어야 했습니다. 기존에 다른 방식과 양식을 가지고 있었기 때문에 낯설었습니다. 하지만 AWS를 이용하면서 서로 이벤트를 확인할 수 있도록 구독 서비스를 만드는 것을 경험할 수 있었습니다. 분명 스케일 아웃을 하기에, 대규모 시스템을 구축하기에 필요한 구성입니다. 어떻게 설계할 수 있는지 배웠고 간단한 어플리케이션을 만들어서 어떤 방식으로 구축되고 활용될 수 있는지 배웠습니다. 해당 내용을 통해 aws의 다양한 기능에 대해 더 자세히 배울 수 있었습니다.

 

* 가장 도움이 된 부분

JENKINS를 이용해 CI/CD를 구성했던 내용이 가장 도움이 되었습니다. 회사에서 JENKINS를 이용해 소스코드를 배포하는 것은 되어 있지만, 이후에 TOMCAT까지 재기동하고 있지 못합니다. 하지만 강의를 통해서 AWS 기반의 프로젝트가 DOCKER와 연동되어 자동으로 빌드 및 배포와 재기동을 실시간으로 어떻게 할 수 있는지 배웠습니다. 물론, 회사에는 프로젝트가 AWS 기반이 아니기 때문에 CI/CD 구축에 한계가 있습니다. 강의에서 SPRING LEGACY를 사용했던 부분까지 똑같았기 때문에, AWS에 설치한 TOMCAT을 이용하여 배포했던 부분은 개인 프로젝트로 진행해볼 예정입니다.

 

 

* 어려웠던 부분

Lambda 함수 작성 및 사용이 가장 어려웠습니다. 아무래도 개발을 중심으로 공부하고 배웠던 저에게 진짜 Cloud의 영역임을 깨닫게 해준 강의였습니다. 실제로 이런 기능은 정말 좋은 회사들만 사용하겠다라는 생각을 했고, 전반적으로 Cloud 설계를 구축하는 것까지 굉장히 낯설고 어려운 내용이었습니다. 저는 DevOps를 지망하기보다, 기존에 협업 툴과 버전관리, 배포 등을 공부하고 싶었기 때문에 제 수준에서 필요 이상의 지식과 내용이기 때문에 추후 필요할 시 추가 학습이 필요한 부분입니다.

 

* 앞으로 추가적으로 학습할 내용

프로젝트에서 어느정도 코드를 짜서 완성하기는 했지만, 배포를 못해봤다던가 단순한 AWS EC2 연동만 해보았습니다. 이번에 배운 JENKINS와, CloudFront를 이용한 S3 이미지 배포 설정까지 추가해서 마저 완성해보려고 합니다. 아무리 비지니스 로직 개발자라 하더라도 빌드와 배포, Docker 기본 사용은 필수 아닌 필수에 속한다고 생각합니다(?) 아니, 아마 웹에 관심있는 사람이라면 혼자서든 어떻게서든 꾸역꾸역 도전해보고 희열을 맛봤을 것입니다. 

 

* 마무리 소감

30일동안 열심히 강의를 꾸준히 듣고 정리한다는 점에서 많은 추진력을 얻고 강제성으로 동기부여가 잘 되었습니다. 그래서 평소에 혼자 했을 때보다는 많은 개념과 지식을 얻었습니다. 내가 어디가 부족한지, 실제 내가 현장에서 사용하는 것과 강의에서 말해주는 차이점은 어떤것이 있는지, 어디 부분을 개선하면 좋을지 등등 좀 더 객관적으로 저를 알 수 있는 시간이었습니다. 아쉬운 점은 완전 DevOps로 저의 진로를 정하지 않다보니, 제 기준에서 과한 내용들과 깊이가 있는 부분들이 있어서 집중력이 떨어지기도 했습니다. 또한 많이 어려운 내용은 겉만 핧고 깊이 분석할 시간이 부족했습니다. 또한 서버리스 부분은 제가 지향하고 있는 공부방향이 아니라서 상대적으로 집중도가 조금 떨어졌습니다. 그럼에도 일을 하면서 꾸준하게 공부했다는 것에 많은 점수를 주고 싶고 유익했습니다. 무턱대고 챌린지를 신청하지 않고 정말 내가 다 완주할 수 있을지, 그럴만한 가치가 있는 강의인지, 나에게 필요성이 큰지 고민하고 도전한다면 비록 중간에 실패하더라도 좋은 경험이 될 것이라고 생각합니다. 다음에 또 좋은 기회와 강의가 있으면 도전하려고 합니다.

 

 

필수 링크 확인

=> https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

반응형