2023 계 모각소 

민트초코딩 활동내용 및 발표자료

<팀원>

소프트웨어학과 최민석

소프트웨어학과 김태욱

소프트웨어학과 유진

소프트웨어학과 정문영

소프트웨어학과 조성연


<팀원별 활동내용>

최민석

외국에서 중고 데이터센터 부품을 구매하여 직접 서버 컴퓨터를 구축하였습니다. 

그 다음 서버 컴퓨터에 쿠버네티스 환경을 구축하고, openstack-helm 차트를 이용하여 단일 노드 환경에서 개인 온프레미스 클라우드 환경 배포를 PoC하고 

테스트에 성공했습니다.

김태욱

Golang을 처음 접해보고 간단한 공지사항 알리미를 제작해보았습니다. 구름 IDE의 컨테이너를 활용하였고,

Firebase를 데이터베이스로 사용, Slack을 통해 공지사항을 전달받을 수 있도록 기능을 개발했습니다.

유진

개발이 진행되는 과정을 처음부터 간단하게 진행했습니다. 프로젝트 주제는 ‘게시판’으로 정했고 그에 맞는 프로젝트 기능을 기획했습니다. 

그리고 유저와 게시판을 테이블로 가지는 DB를 설계했고, 기능 기획과 DB를 기반으로 API 명세서를 작성했습니다. Intellij에서 Spring Boot를 사용하여 개발을 진행했고 

MySQL을 사용하여 데이터베이스를 연결했습니다. 그리고 Github을 사용하여 코드를 관리했습니다. 

그리고 배포를 위해서 Docker에 대한 이론 공부를 하고 Spring 프로젝트를 Docker image로 생성한 후 실행했습니다.

정문영

Spring boot로 작성한 코드를 리뷰하는 과정에서 클린코드의 중요성을 느끼게 되었고 이를 계기로 JPA가 동작하는 방식 및 DB를 설계하는 방식에 대해 공부하고자 하였습니다.

 ‘자바 ORM 표준 JPA 프로그래밍’ 인프런 강의 수강을 통해 JPA로 객체와 관계형 데이터베이스를 설계하고 매핑하는 방법을 익혔습니다. 

계획서에는 없었지만 네트워크와 관련한 공부도 추가적으로 진행하였습니다. 

책 ‘성공과 실패를 결정하는 1%의 네트워크 원리’를 기반으로 하여 네트워크 전체의 움직임에 대해 학습하고 관련 이론을 정리하였습니다.

조성연

모각소 기간동안 Nest.js와 배포/인프라를 공부하였습니다. Nest.js를 이용해 유저/인증, nodemailer를 이용한 메일 인증을 구현하였습니다. 

이를 통해 Spring과 비교하며 MVC 구조의 백엔드에 대해 이해하는 경험이 되었습니다. 그리고 Docker와 pm2를 이용해 배포를 함으로써, 

node 기반 프로젝트의 배포 방법을 익혔습니다. 

이 프로젝트와 별개로 인프라에 대한 공부 및 실습을 하고 싶어서 모각소 팀원과 함께 GitOps 사용 인프라 구조에 대한 얘기를 하고, 

EKS를 사용해 실제 배포에 쓰일 수 있는 로드밸런서, Ingress, Pods, VPC 및 Subnet의 개념과 사용 구조, 실습을 하였습니다.


<팀원별 최종성과>

최민석

기존의 오픈스택 배포 및 운영 전략인 TripleO에서 쿠버네티스를 이용하여 오픈스택을 구축하는 방법에 대한 경험을 얻을 수 있었다. 

이를 기반으로 현대의 배포전략인 GitOps에 해당 오픈스택 배포 경험을 통합하여 적용할 수 있을지에 대한 아이디어를 구상할 수 있게 되었다.

김태욱

웹 페이지에서 데이터를 추출하는 기술을 통해 웹 데이터를 수집하고 가공하는 능력을 향상시켰습니다. 

웹 크롤링을 통해 다양한 형식의 데이터를 가져와 활용하는 방법을 습득했습니다. 또, 슬랙 API를 통해 외부 서비스와 연동하고 데이털르 주고받는 방법을 익혔습니다. 

마지막으로 구름 IDE의 컨테이너 기술을 활용하여 개발 환경을 관리하고 실행함으로써 개발 프로세스를 간소화하고 일관성 있게 관리하는 경험을 했습니다.

유진

개발이 진행되는 전반적인 과정을 경험했습니다. 기획에 따라 DB를 설계했고 협업에서 필수적인 API 명세서를 작성하는 방법을 공부했습니다. 

그리고 배포와 Docker에 대해 공부했습니다.

정문영

인프런 강의 수강과 실습을 통해 JPA의 내부 동작 방식을 이해할 수 있었고, 객체와 관계형 데이터베이스 테이블을 올바르게 매핑하는 방법을 배울 수 있었습니다. 

네트워크 공부를 통해 HTTP 리퀘스트, 도메인 계층, 소켓 라이브러리, TCP/IP를 포함하는 다양한 프로토콜 스택, 방화벽, 캐시 서버, 분산 처리 등의 이론을 학습할 수 있었습니다.

조성연

[Nest.js] JWT 기반 유저/인증( https://github.com/yeonnnnjs/Nestjs_JWT ) 

[Nesj.js] 독서인증앱 백엔드 구현( https://github.com/yeonnnnjs/Booklog )

[deployment] EKS 배포 스크립트 작성 ( https://github.com/Ajou-Nudge/deploy_etc )


<팀원별 향후계획>

최민석

해당 경혐을 확장하여 자기주도프로젝트를 진행할 계획이다. 

GitOps 배포 전략을 이용하여 쿠버네티스 클러스터에서 OpenStack을 운영하는 경험을 만들고 이를 공유하는 것이 계획이다.

김태욱

현재는 Slack을 통해 공지사항을 받을 수 있지만, 나중에 웹 또는 모바일 앱을 개발하여 더 편리한 인터페이스를 제공할 수 있도록 할 계획입니다. 

또, 특정 시간대에 자동으로 공지사항을 예약하여 전달하는 기능을 추가할 계획입니다.

유진

배포에 대해 더 공부하고 이번 모각소에서 진행한 프로젝트를 다른 사람도 접근할 수 있도록 배포할 계획입니다. 

그리고 모각소를 통해 익힌 개발과 Spring에 대한 지식을 2학기 캡스톤디자인에 적용할 계획입니다.

정문영

학습한 JPA 내부 동작 방식을 고려하여 과거에 진행했던 프로젝트의 코드 리뷰를 진행할 예정입니다. 

더 효율적인 코드로 수정하는 과정을 통해 클린코드에 가까운 코드 작성 방식을 학습하고자 합니다. 

디자인패턴 공부도 추가로 진행하여 더 좋은 코드를 작성하는 과정에 기여하고자 합니다.

조성연

독서인증앱 백엔드를 실제로 앱과 함께 맞춰보면 좋을 것 같다는 생각을 해서, Flutter 개발을 하는 과 동기와 함께 계속해서 독서인증앱을 개발 할 게획입니다. 

또한, 모각소를 통해 익힌 인프라 지식을 2학기 파란학기 프로젝트와 자기주도프로젝트에서 유의미하게 사용할 수 있을 것 같아서 기대가 큽니다.


<발표자료>