포트폴리오상세페이지

백동렬

학과

컴퓨터공학부

관심분야

컴퓨터네트워크

학번

2019****67

자기소개

안녕하세요 클라우드 엔지니어를 꿈꾸고 있는 백동렬입니다.


단순히 컴퓨터 부품들이 좋아서 컴퓨터 공학과에 들어왔지만, 작은 코딩지식으로도 만들수 있는게 많다는 것을 알게된 후 개발에 몰두하게 되었습니다.


대학교의 학업을 통해 언어, 알고리즘, 네트워크 등 컴퓨터 공학의 기본 지식을 탄탄히 다져왔습니다. 이론적인 공부 뿐만 아니라, 여러 프로젝트를 통해 실전 경험도 쌓았습니다.


한 AWS강연을 듣고 난 후에 클라우드 기술이 단순히 컴퓨팅 서비스를 제공하는 것에 그치지 않고, 다양한 산업 분야에서 활용될 수 있다는 것을 알게 되었습니다. 이를 통해 클라우드 기술이 우리의 삶을 더욱 편리하고 효율적으로 만들 수 있다는 가능성을 확인하게 되었고, 클라우드 엔지니어로서의 진로를 더욱 확고히 하게 되었습니다.


실습을 통해 AWS와 같은 주요 클라우드 플랫폼에 대한 깊은 이해를 쌓았습니다. 다양한 프로젝트를 통해 EC2, S3, RDS, VPC와 같은 AWS 서비스를 활용하여 클라우드 인프라를 직접 구축해본 경험이 있습니다.


현재는 클라우드 환경에서의 서버 설정, 네트워크 구성, 데이터베이스 관리, 자동화 스크립팅(Terraform, CloudFormation) 등 전반적인 인프라 구축까지 수행할 수 있습니다. 특히, Docker와 Kubernetes를 이용한 컨테이너 오케스트레이션에도 익숙하며, Jenkins와 GitHub Actions를 활용한 CI/CD 파이프라인 구축 경험도 가지고 있습니다.


Jenkins와 GitHub Actions를 이용한 CI/CD 파이프라인 구축은 복잡할 수 있지만, 이를 통해 코드 배포 프로세스를 자동화하고, 빌드, 테스트, 배포 단계를 효율적으로 관리할 수 있었습니다. 이를 통해 개발 속도를 높이고, 소프트웨어 품질을 유지할 수 있는 중요한 기술을 익혔습니다.


또한, AWS 공인 솔루션스 아키텍트 어소시에이트(SAA) 자격증을 준비하고 있으며, 이를 위해 체계적이고 철저하게 공부하고 있습니다. 클라우드 기술의 최신 동향을 지속적으로 학습하며, 최고의 엔지니어로 성장하기 위해 노력하고 있습니다.

 

이수교과목

1-1
소프트웨어 원리
미적분학
전기전자개론


1-2
컴퓨터 프로그래밍
메카트로닉스 개론
컴퓨팅 사고력


2-1
웹프로그래밍 I
객체지향 프로그래밍 I
디지털 논리 회로 실습


2-2
웹프로그래밍2
컴퓨터 구조
임베디드 시스템 I
윈도우 프로그래밍


3-1
클라우드 컴퓨팅
프로그래밍 언어론
컴퓨터 알고리즘
모바일 프로그래밍
데이터 베이스


3-2
리눅스 시스템
데이터 통신
네트워크 프로그래밍


4-1
캡스톤 디자인 II
객체지향 프로그래밍 응용
소프트웨어 디자인 패턴

사용가능기술

언어
Python
Java
JavaScript
MySQL
PHP

프레임워크/라이브러리
React
TensorFlow
ReactNative
Selenium

백엔드 유틸리티
Kafka
Docker
Kubernetes

클라우드
AWS EC2
AWS S3
CloudFront
AWS API Gateway

협업툴
Git
Github
IntelliJ
Notion
Figma  

수행 프로젝트

SYU AI DOCUMENT OCR
- 수행인원: 1명
- 개발 환경: 파이썬
- Github: https://github.com/think0507/SYUAI
- 배포: https://dryeol.streamlit.app/- 교내 산학연계 프로그램을 통해 SI 회사인 에이아이톡과 4개월간 프로젝트를 진행했습니다.
멘토링을 통해, 현직에서 협업을 하는 것에 대해 배웠고,
LLM, RAG등 챗봇관련 기술들에 대해서 공부하고, 개발을 진행했습니다.

현재는 Python의 프레임워크인 Streamlit으로 배포중이며, 추후 이것을 합쳐서 팀 프로젝트로 고도화 시킬 예정입니다.

이 프로젝트에서 이미지 형식의 파일과 PDF 형식의 파일을 처리하기 위해 OCR 기술을 활용하고 있습니다. OCR은 Google Cloud에서 제공하는 DocumentAI를 사용하였으며, API 호출 후 정제되지 않은 데이터가 출력되는 것을 처리하기 위해 Gemini를 활용했습니다. 간단한 프롬프팅을 사용하여 문서나 이미지를 요약하고, 이미지 안의 내용이 문제라면 문제 풀이 기능을 구현 중입니다.

이 과정에서 여러 도전과제와 배움을 경험했습니다. 첫째, OCR 기술을 처음 접하게 되어 이를 학습하고 적용하는 데 많은 노력이 필요했습니다. Google Cloud의 DocumentAI를 통해 데이터를 추출하고 이를 정제하는 과정에서 여러 번의 시행착오를 겪었습니다. 둘째, API 호출 후 출력되는 비정형 데이터를 정제하고 유용한 정보로 변환하는 과정에서 데이터 처리 및 분석 기술의 중요성을 실감했습니다.

셋째, 챗봇 관련 기술인 LLM과 RAG를 학습하면서, 자연어 처리와 기계 학습의 복잡성을 이해하게 되었습니다. 이를 통해 다양한 사용자 요청을 처리하고 적절한 응답을 생성하는 기술을 습득했습니다. 또한, Streamlit을 통해 개발한 애플리케이션을 배포하면서, 실시간 사용자 피드백을 반영하여 애플리케이션을 개선하는 방법을 배웠습니다.

이 경험을 통해 프로젝트 기획부터 구현, 배포까지의 전 과정을 체험하며 개발자로서의 역량을 크게 향상시킬 수 있었습니다. 앞으로도 이러한 경험을 바탕으로, 철저한 기획과 체계적인 개발 과정을 통해 더 나은 소프트웨어를 개발하는 데 주력할 것입니다.


멍냥이의 한끼 연구소
- 수행인원: 5명
- 개발 환경: ReactNative, Mysql, FireBase
- Github: https://github.com/Julienjang/rn-pet/-전역 직후 졸업한 선배에게 제안이 와서 시작했던 프로젝트입니다.
현업에 종사하고 있는 분이라 실제 기업에서 어떻게 프로젝트를 시작하는지, 차근차근 알게 되었습니다. 프로세스 정의서, 요구사항 정의서, 업무기술서 등 프로젝트를 설계할 때 해야하는 것들에 대해서 작성해보고 피드백 받으면서 기획에 대해 알게 되었습니다. 이 경험을 바탕으로 추후 진행하는 프로젝트에 대해서는 코드부터 시작하는 개발이 아닌, 기획부터 다져가는 개발을 하게 되었습니다.
한번도 접해보지 않았던 리액트 네이티브 개발을 맡게 되었는데, 처음에는 새로운 기술을 배우는 것이 쉽지 않았습니다. 특히, JavaScript와 React의 기본 개념을 익히는 데 많은 시간이 필요했습니다. 하지만 꾸준히 학습하고, 온라인 강의와 문서를 참고하며 점차 익숙해졌습니다. 리액트 네이티브의 주요 개념인 컴포넌트 기반 구조와 상태 관리, 그리고 React의 생명주기 메서드를 이해하는 것이 핵심이었습니다.

리액트 네이티브를 사용하면서 가장 큰 도전은 다양한 플랫폼(Android와 iOS)에서 일관된 사용자 경험을 제공하는 것이었습니다. 두 플랫폼 간의 차이점 때문에 UI 및 기능 테스트가 예상보다 더 복잡하고 시간이 많이 걸렸습니다. 또한, 네이티브 모듈을 연동하는 과정에서 발생하는 문제들을 해결하는 것도 어려웠습니다. 예를 들어, 특정 기능을 구현하기 위해 네이티브 코드를 작성하고, 이를 리액트 네이티브와 통합하는 과정에서 여러 차례 시행착오를 겪었습니다.

그러나 이러한 도전들을 극복하면서 몇 가지 중요한 교훈을 얻었습니다. 첫째, 끊임없는 학습과 실험이 중요하다는 것입니다. 새로운 기술을 배우고, 이를 실제 프로젝트에 적용하는 과정에서 많은 것을 배울 수 있었습니다. 둘째, 커뮤니티의 힘을 빌리는 것이 큰 도움이 된다는 점입니다. 리액트 네이티브는 활발한 오픈 소스 커뮤니티가 있으며, 문제를 해결하기 위한 다양한 자료와 도움을 받을 수 있었습니다. 셋째, 철저한 테스트와 디버깅의 중요성을 깨달았습니다. 다양한 플랫폼에서의 호환성과 성능을 보장하기 위해서는 지속적인 테스트와 코드 개선이 필요했습니다.

이 경험을 통해 개발자가 단순히 코드를 작성하는 것 이상의 역할을 해야 한다는 것을 깨달았습니다. 프로젝트의 전반적인 기획부터 시작해, 요구사항을 정의하고, 체계적으로 설계하는 과정이 중요하다는 것을 다시 한번 실감했습니다. 앞으로의 프로젝트에서도 이러한 경험을 바탕으로, 기획부터 탄탄히 다져나가는 개발 방식을 지속적으로 적용할 것입니다.

마지막으로, 협업의 중요성도 느꼈습니다. 혼자 모든 것을 해결하기보다는 팀원들과의 원활한 소통과 협업을 통해 더 나은 결과를 도출할 수 있었습니다. 이 과정에서 얻은 경험과 교훈은 앞으로의 개발자 생활에 큰 자산이 될 것입니다.

Botox
- 수행인원: 5명
- 개발 환경: React, Mysql, Spring
- Github: https://github.com/think0507/botox_front

- 현재 진행하고 있는 프로젝트입니다. K-Digital-Training에서 진행하는 프로그램에 참여하며 팀원들을 만나 함께 프로젝트를 진행하고 있습니다. 이 프로젝트는 디스코드와 같이 실시간으로 음성채팅을 할 수 있는 기능을 제공하면서, 게임을 함께 할 사람들을 매칭해주고 오픈 채팅방이 있다는 점이 특징입니다.이것을 구현하기 위해서 실시간 음성채팅 기술을 선택해야 했습니다. 여러 가지 해결책을 고려해보았는데, 먼저 WebRTC를 사용하여 직접 음성 데이터를 스트리밍하는 방법을 생각했습니다. WebRTC는 브라우저 간 직접 연결을 통해 실시간 통신을 가능하게 하며, 지연 시간이 적고 안정적인 음성 채팅을 구현할 수 있습니다. 또한, 오픈 소스이기 때문에 비용 면에서도 유리합니다.

하지만 WebRTC를 구현하는 과정에서 네트워크 환경에 따라 연결이 불안정해질 수 있는 문제를 발견했습니다. 이를 해결하기 위해 두 번째로 생각한 방법은 기존의 음성 채팅 서비스를 통합하는 것이었습니다. 예를 들어, Twilio나 Agora와 같은 상용 음성 채팅 API를 사용하면, 안정적인 음성 통신을 보다 쉽게 구현할 수 있습니다. 이러한 서비스들은 다양한 네트워크 환경에서의 안정성을 보장하며, 부가적인 기능도 제공하여 더 나은 사용자 경험을 제공할 수 있습니다.

최종적으로, 팀은 Agora를 사용하기로 결정했습니다. 이유는 Agora가 제공하는 뛰어난 음질과 낮은 지연 시간, 그리고 다양한 부가 기능들 때문입니다. 또한, 기존의 문서와 예제 코드가 잘 갖춰져 있어 구현 시 참고하기 용이했습니다.

현재 프론트엔드는 상당 부분 진행된 상태이며, 주요 UI와 기능 구현이 완료되었습니다. 이제 Agora를 통해 음성 채팅 기능을 완성하면, 매칭 시스템과 오픈 채팅방 기능까지 구현할 계획입니다. 이를 통해 사용자는 게임을 함께 할 사람들을 쉽게 찾고, 실시간으로 소통하며 즐길 수 있게 될 것입니다.

추가로 프로젝트를 고도화한다면, 음성 채팅에 AI 기반의 소음 제거와 음성 인식 기능을 추가할 수 있습니다. 이를 통해 사용자는 더 나은 음질로 대화를 나눌 수 있으며, 음성 명령을 통해 게임 내 간단한 명령을 실행하거나, 특정 이벤트에 자동으로 반응하는 기능을 제공할 수 있습니다. 또한, 데이터 분석을 통해 사용자 매칭 시스템을 더욱 정교하게 개선하고, 사용자 경험을 극대화할 수 있습니다.

첨부파일

  • 담당부서
    소프트웨어 중심대학
  • 전화번호
    02-3399-3633
최종수정일 : 2024년 06월 10일