본문 바로가기
취업준비

프로젝트 경험 기술

by Yoon_estar 2023. 11. 28.
728x90
반응형

주식 추천 시스템(2023 SW 중심대학 공동 해커톤)

2023년 6월, 저는 천안에서 개최된 '2023 SW 중심 대학 공동 해커톤'에 참여한 경험이 있습니다.
이 경험은 주식과 MBTI(성격 유형 분석)의 관계를 주제로 한 프로젝트를 기획하고 성공적으로 완료한 결과물입니다. 제가 조장으로 참여하여 6명의 팀원을 모아 효율적인 협력을 통해 프로젝트를 이끌었습니다.
이 프로젝트에서는 개인의 성격(MBTI)과 주식 투자성향(ZBTI)을 연계하여 맞춤 주식 상품 추천 시스템을 개발했습니다. ZBTI는 우리 조가 고유하게 개발한 주식 투자성향 분석 지표로, CAVB 네 가지 유형으로 분류됩니다. 주식 상품 정보와 사용자의 설문조사 데이터를 기반으로 맞춤 추천 시스템을 구축했습니다. 웹 서버는 플라스크 서버와 스프링 부트 서버를 활용하였으며, 프론트 엔드는 리액트로 개발되었습니다. 데이터는 AWS의 RDS 서비스에 저장되었고, 서버 구축과 배포는 AWS EC2와 Docker를 활용했습니다. 저는 인프라 구축, DB 모델링, 프로젝트 범위 설정, 질문지 제작 및 주제 제안을 맡았습니다.
이 프로젝트를 위해 다양한 협업툴을 활용했습니다. 그중에서도 해커톤에서 처음으로 피그마를 사용하여 프론트 엔드 개발자와 디자이너 간의 협업 경험을 쌓을 수 있었습니다. 프로젝트 참여 당시에는 디자인과 코드가 분리되어 있었지만, 최근에는 개발자 모드가 추가된 피그마를 통해 프론트 엔드 디자인을 직접 다루는 경험을 했습니다.
이 프로젝트는 처음으로 다양한 분야의 모르는 사람들과 함께 협력하여 밤을 새우며 완성한 경험이었습니다. 특히 디자이너와의 협업은 유의미한 경험이었습니다. 이 경험을 통해 각자의 역할과 책임을 명확하게 정하고 협업하는 능력을 키우는 중요성을 깨닫게 되었습니다.

 

코사인 유사도를 사용한 이미지 추천 및 분류 시스템(캡스톤 디자인)

교내 캡스톤 디자인 수업에서는 취미로 사진을 찍는 사람들과 유명하지 않은 작가들을 위한 포트폴리오 웹 페이지를 구축하는 프로젝트를 진행하고 있습니다. 이 프로젝트는 전체 프로젝트 생명주기를 효과적으로 따라가며 프로젝트의 구성, 계획 수립, 요구사항 도출 및 분석, 시스템 분석, 시스템설계, 시스템 구현, 프로세스 및 프로젝트 관리, 테스트 및 검사, 그리고 배포 과정을 차례로 진행하고 있습니다.
이 웹 페이지의 주요 기능으로는 이미지 분류 및 추천 기능, 회원 관리 기능, 게시판 기능, 그리고 관리자 페이지 기능이 포함되어 있습니다. 이 프로젝트에서는 저는 조장 역할을 맡아 프로젝트의 기획, 관리자 페이지의 개발, 인프라 환경의 구축, docker 이미지의 배포, 그리고 데이터베이스 모델링을 주요 업무로 수행하였습니다. 프로젝트를 구현하기 위해 인공지능 분야에서는 파이썬 언어를, 백엔드 분야에서는 JavaScript 언어를, 프론트엔드 분야에서는 HTML과 React를 활용했습니다. 데이터베이스는 Docker 이미지에 MariaDB를 설치하여 배포하였습니다. 또한 협업을 원활하게 진행하기 위해 GitHub, DockerHub, Slack, Notion, 구글 드라이브 등 다양한 협업 도구를 활용하여 실제 회사와 유사한 환경에서 프로젝트를 진행하였습니다.
이 프로젝트를 통해 시스템 구축뿐만 아니라 개발 프로세스를 경험하게 되었고, 인공지능 모델을 적용하는 과정에서도 소중한 경험을 쌓을 수 있었습니다. 현재 프로젝트는 80% 이상 완료된 단계에 있으며, 지속적인 노력을 통해 완성도를 높이고자 하고 있습니다.

 

Windows 2019 Server를 사용한 사내망 구축

제가 진행한 프로젝트에서는 윈도우 환경에서 Active Directory Domain Services(ADDS)를 활용하여 사용자, 그룹, 컴퓨터 관리 및 인증을 진행했습니다. ADDS 서버 설치 후 멤버 도메인과 자식 도메인을 연동하여 중앙 서버에서 인증 및 다양한 서비스를 제공하는 환경을 구축했습니다. 이 과정에서 라우팅 프로토콜 설정을 통해 외부망과 내부망을 분리하였습니다.
저는 그룹 관리와 사용자 계정 관리를 통해 가상의 회사 부서와 클라이언트를 체계적으로 관리했습니다. 또한 로컬 보안 정책을 활용하여 각 사원의 컴퓨터에 적절한 권한을 부여하여 중앙 통제 시스템을 구축했습니다. VPN 서버를 통해 IP 대역을 할당하여 DHCP를 사용해 중복 아이피 문제를 방지했습니다. 추가로 DNS, IIS, Mail Server 기능을 사용하여 웹 서버를 구현하였고, 데이터베이스 서버는 Linux 환경을 활용했습니다.
저는 리눅스 경험보다는 윈도우 경험이 부족하다고 판단하여 의도적으로 윈도우 운영체제를 활용한 프로젝트에 주력했습니다. 프로젝트 도중에 윈도우 서버의 용량과 무게가 크다는 어려움을 겪었는데, 이를 가상 머신의 하드디스크 용량을 최소화하여 극복하였습니다. 또한 예상과는 다른 상황에서 웹 서버와 DNS 서버, VPN 서버와 DHCP 서버를 하나의 서버에서 운용하여 효율적인 문제 해결을 시도했습니다.
이 프로젝트를 통해 윈도우 환경에서의 다양한 시스템 구축 및 운영 경험을 쌓을 수 있었으며, 윈도우와 리눅스의 각 특징을 비교하고 이를 최대한 활용하는 방법을 배울 수 있었습니다.

 

쿠버네티스 / 도커를 활용한 CI / CD 파이프라인 구축 프로젝트

현재 CI/CD 파이프라인의 개발 프로세스를 이해하고, 더 깊은 수준의 컨테이너 인프라 환경 이해를 위해 `컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커`라는 책을 활용하고 있습니다. 이를 통해 젠킨스를 활용하여 배포 자동화를 구축하려고 하며, 이 프로세스를 통해 애플리케이션의 개발부터 배포까지의 흐름을 자동화하고 효율적으로 관리하려고 합니다.
그뿐만 아니라, 구축만 하는 것이 아니라 지속적인 모니터링을 통해 시스템을 관리하고 개선할 계획입니다. 이러한 모니터링을 통해 문제를 빠르게 감지하고 대응하여 안정적인 서비스를 제공할 수 있습니다.
또한 스프링 객체와 도커를 활용하여 마이크로 서비스 아키텍처 환경을 구상하는 것도 중요한 목표입니다. 마이크로 서비스 아키텍처는 복잡한 시스템을 작은 단위로 나누어 개발하고 관리함으로써 유연성과 확장성을 높일 수 있는 접근 방식입니다. 이를 도입하여 애플리케이션의 모듈성과 유지 보수성을 향상할 계획입니다.
이러한 노력을 통해 저는 최신 기술과 효율적인 개발 방법론을 익히고 실무에서의 역량을 키워나가
는 데 집중하고 있습니다.

 

3인 체제의 Hybrid Cloud System 구축 프로젝트

국비 지원의 마지막 종합 프로젝트로, 처음으로 자유롭게 주제를 선택하여 서버의 설계부터 구현 및 테스트까지 진행한 경험을 소개합니다. 이 프로젝트의 주제는 서버 증설로 인한 private 서버에서 public 클라우드로의 데이터 마이그레이션 작업을 구현하는 것이었습니다. 저는 3인 팀에서 조장 역할을 맡았으며, 프로젝트 전체 시나리오 작성을 담당하였습니다. 제 역할로는 DNS 서버 구축, DB 서버의 데이터를 백업 서버로 마이그레이션하는 작업, Hyper-V 트러블 슈팅, 웹 서버 구축을
수행하였습니다.
서버 구축 이후에는 각 서버의 모니터링을 위해 로그 정보를 가져오는 쉘 스크립트를 개발하였습니다. 주기적으로 로그 정보를 가져와 자동으로 로그 파일을 압축하여 데이터 서버에 백업하는 기술을 구현하는 데에 crontab을 활용하였습니다.
이 프로젝트는 제 첫 번째 장기 팀 프로젝트였습니다. 이론적인 내용뿐만 아니라 웹 검색을 통해 새로운 기술을 배우고 적용함으로써 수업에서 배운 지식을 최대한 활용하였습니다. 이론적인 학습과 현장에서의 실무 적용 사이의 간극을 메우며 서버와 기능을 선택하고 조정하는 과정을 통해 실무 능력을 키우는 경험을 얻었습니다. 문제 해결을 위해 트러블 슈팅을 진행하고, 이를 문서화하여 동일한 문제 발생 시 대처 방법을 보다 효율적으로 활용할 수 있도록 하였습니다.
프로젝트 과정에서 팀원들과의 토론, 이견 조율, 결정 과정을 통해 커뮤니케이션 능력을 향상했습니다. 팀원들 간의 협력과 결과 도출 과정에서 중요한 역할을 하며 효과적인 커뮤니케이션의 중요성을 배웠습니다.
이 프로젝트는 성공적으로 완료되어 교육 과정 수료 후 우수 인재 추천 상을 수여할 정도로 성과를 거두었습니다. 이 경험을 통해 실제 업무 환경에서의 능력을 증명하고, 팀으로 협력하여 프로젝트를 성공적으로 마무리한 자부심을 가질 수 있게 되었습니다.

 

Docker를 활용한 인프라 구축

저는 도커 컨테이너 기술을 사용하여 인프라를 구축하였습니다. 이를 윈도우 OS와 리눅스 OS에서 생성하고 배포하였습니다. 기본적인 아파치 웹 서버와 mariaDB를 내장한 도커 이미지 파일을 제작하고, 이를 도커 허브에 업로드하여 배포 및 관리하였습니다. 처음에는 DNS 서버를 도커를 사용하여 구축하려고 시도했으나, 고정 IP로 네임 서버와 연결해야 하는데 도커 이미지의 고정 IP 할당이 어려워서 DNS 서버는 게스트 OS에 구축하였습니다. 그 외에 DB, DB 백업, 웹 서버를 구축하고 배포하는 작업을 진행했습니다.
보안 측면에서는 도커 이미지에 RSA 공개키를 설정하고 SSH 접근 권한을 수정하여 외부로부터의 접근을 차단하였습니다. 이와 더불어 여러 도커 파일들을 효율적으로 관리하기 위해 다양한 관리 기법을 적용했습니다. 또한 도커 이미지들 간의 네트워크 연결을 설정하고, 볼륨 관리 및 로그 정보 추출을 통한 모니터링 작업도 수행하였습니다.
이 경험을 통해 도커를 활용하여 복잡한 인프라 구축 및 관리를 수행하는 방법을 배웠습니다. 서로 다른 운영체제에서 도커를 활용하는 것도 익히게 되었으며, 도커를 이용하여 각 서비스를 격리하고 보안을 강화한 경험을 쌓을 수 있었습니다. 또한 여러 도커 이미지를 한 번에 효율적으로 관리하고 모니터링하는 방법을 익힘으로써 실무 능력을 향상할 수 있었습니다.

 

모의 침투 및 침투 대응

아래의 토폴로지는 국비 지원 수업의 최종 프로젝트에서 직접 설계한 사내 네트워크 구성도입니다. 이 프로젝트에서는 보안 수업에서 습득한 해킹 기술, 보안 기술, 패킷 분석 기술을 활용하여 아래와 같은 모의 해킹 시나리오를 수행하였습니다.
해킹 시나리오는 다음과 같았습니다. 해커는 사내 인사 부서의 직원 PC에 접근하여 해당 PC를 좀비 PC로 만든 후 회사의 데이터베이스에 접근하여 정보를 탈취하고, 로그 기록을 삭제하며 서버의 운영체제를 파괴하는 작업을 시도했습니다.
먼저, 인사 부서 직원에게 익숙한 excel.exe 파일로 위장된 MSF(Metasploit Framework)로 만든 백도어 실행 파일을 이메일로 전송하였습니다. 해당 파일을 실행하면 백도어가 작동하며 입력된 키를 키 스캔하여 화면 스크린샷을 찍는 기능을 수행합니다. 이렇게 감염된 컴퓨터는 좀비 PC로 활용되어 회사 내부 시스템을 공격하는 데 사용됩니다. 이후, 포트 스캐닝을 통해 회사 내부 서버의 역할을 유추하고 데이터베이스(DB) 서버에 접근하기 위해 내부망을 통해 RSA 공개키를 활용하여 접근 을 시도하였습니다. 접근 후에는 백업 서버에 백업된 DB를 활용하여 회사 시스템을 망가뜨리는 작업을 시도했습니다.
위의 모의 해킹 작업 이후, 보안 조치로 다음과 같은 작업을 수행하였습니다

 

1. DDoS 공격 방지를 위해 외부로부터 오는 ping을 차단하였습니다.
2. 서버 역할을 숨기기 위해 포트 포워딩을 통해 각 서버의 역할을 알기 어렵게 하였습니다.
3. 데이터베이스(DB)에 백업 서버를 설치하여 장애 발생 시 복구할 수 있는 환경을 구축하였습니다.
4. 로그 서버를 구축하여 시스템 부하 시 시스템 관리자에게 알림을 전송하도록 하였습니다.


이를 통해 모의 해킹 작업을 통해 실제로 발생할 수 있는 보안 취약점을 파악하고, 이를 해결하는 다양한 보안 조치를 시도하며 보안 강화에 기여하였습니다.

반응형

'취업준비' 카테고리의 다른 글

기업별 면접 리뷰_아이티 이지  (0) 2023.11.28
기업별 면접 리뷰_가비아  (0) 2023.11.28
자기 소개서  (0) 2023.11.28
취업 준비를 하며 느낀 점  (0) 2023.11.28
기업 고르는 기준  (5) 2023.11.28