개요
학점 연계 ICT 인턴십 업무를 수행하였고 이에 대한 회고를 작성하는 포스팅입니다.
회고는 배운 것을 중심으로 총 5가지 사항으로 나누어보았습니다.
- 회사의 운영과 협업 경험
- 사용자가 있는 서버 운영 및 개선 경험
- 사내 세미나를 통한 프로그래밍 역량 강화 및 소통 능력 향상
- 데이터 기반 사용자 경험 개선
- 백오피스 개선
1) 회사의 전반적인 운영과 협업 프로세스 파악
스타트업 생태계의 성장 경험
인턴십을 수행하면서스타트업 특성 상 예측 불가능하고 변화가 빠르기 때문에, 유연하게 대처하고 문제를 빠르고 정확하게! 해결하는 능력이 중요하다는 것을 체감했습니다.
MBTI 극한의 J를 달고있는 저로서는 항상 계획적이고 꼼꼼하지만 융통성이 없는 것이 나름의 고민이었습니다. 하지만 인턴십 기회를 얻은 회사에 기여를 하고싶다는 적극적인 마음 하나로, 기존의 엄격한 기준과 태도에 많은 유연성을 첨가할 수 있었습니다.
계획이 변경되거나 업무에 어려움이 생겨도 능동적으로 정보를 수집하고 학습하며, 적극적으로 업무에 참여하는 것이 성장과 발전의 핵심임을 깨달았습니다. 이러한 자세로 일하면서 개인의 성장뿐만 아니라 팀 전체의 효율성과 협업 능력 향상을 위해 노력하는 시간이었습니다.
애자일 개발 방법론을 통한 원활한 소통
개발팀은 매일 오전 10시에 업무 진행 상황과 성과, 어려움을 공유하는 daily stand-up 회의를 진행합니다. 처음에는 매일 진행 상황을 공유하는 것이 부담스러웠습니다. 하지만 이 회의를 통해 제가 맡은 업무를 제대로 수행하고 있는지, 올바른 방향으로 나아가고 있는지 점검할 수 있다는 것이시간 자원을 효율적으로 활용하는 데 도움이 된다는 것을 깨달았습니다.
이를 통해 초기의 부담감을 극복하고 일상적인 소통의 중요성을 알게 되었습니다. 업무와 성과에 대해 상사분들과 지속적으로 소통하며 피드백을 주고받음으로써, 더 효율적이고 정확한 업무 수행을 위해 꾸준히 노력할 수 있었습니다.
커뮤니케이션 강화를 통한 소속감 증진 및 성장
daily standup에 참여하면서 어떤 것들을 메모하고 정리할지, 보고는 어떤 식으로 해야 효율적인지에 대한 고민을 많이 했습니다. 이러한 과정을 거치며 회의에서 적극적으로 발표하고 회의에 참여한 결과, 명확하고 효과적인 의사소통 능력을 기를 수 있었습니다.
또한 회의 중 일상적인 소소한 대화와 근황 공유를 하면서 좀 더 빠르게 회사에서의 소속감을 느낄 수 있어,
회사와 개인의 성장에 대해 진지하게 고민하고, 발전을 위해 여러 아이디어를 모색하는 값진 경험을 할 수 있었습니다.
여담을 붙이자면 PM님과 교수님, 저 셋 면담을 할 때, PM님께서 제가 회사에 대해 소개하는 점이 감명깊으셨다고 합니다. 🤣
서비스와 탄생역사를 정확히 이해하고있어서 놀라셨다고.....🤣🤣🤣그만큼 진심이었고, 저의 노력을 알아봐주셔서 감사했습니다ㅠㅠ
2) DevOps - linux OS 서버 운영 경험
외부 API 사용을 위한 공인 IP Gateway 구축
서비스 개편 당시 새로 도입한 API를 사용하기 위해 하나의 VM 인스턴스 IP 주소를 화이트 리스트에 작성해야 했습니다. 무중단 배포를 위해 사용했던 방식은 인스턴스명과 IP 주소가 변경되었고, 이러한 배포 방식을 유지하기 위해서 새로운 솔루션 도입이 필요했습니다. 이 문제를 해결하기 위해 Cloud NAT을 도입하여 아웃바운드를 컨트롤하는 솔루션을 고안 및 구축하였습니다.
이 과정에서 GCP의 다양한 기술을 직접 사용해볼 수 있었습니다. 기존 서버를 모두 삭제하고 새롭게 생성했어야 했기에... GCP를 통한 서버 배포 과정을 하나하나 겪을 수 있는 유익한 경험이었습니다.
빌드 및 배포 자동화, 30분 시간 단축!
수동으로 빌드 및 배포를 진행하는 상황에서 발생하는 문제점 해결을 위해, 자동화 POC를 시작하게 되었습니다. 이를 통해 서비스의 안정성과 효율성을 향상시키고자 하였습니다. 초기 단계에서는 CI/CD 도구에 대한 리서치를 통해 Jenkins, Cloud Build, Bitbucket Piplines 등 다양한 옵션을 검토하였습니다.
세미나를 통해 현재 사용 가능한 도구와 각 도구의 특징, 장단점에 대한 리서치를 공유하고, GCP의 Cloud Build를 활용하여 빌드 및 배포 자동화 POC를 수행하기로 결정하였습니다. 회사의 상황, 자원, 투입 가능한 시간, 요구사항 등을 고려하여, GCP와의 통합성과 편의성, 사용 편의성 등에서 최적의 선택으로 판단되어 Google Cloud Platform(GCP)의 Cloud Build를 선정하였습니다.
이후 개발팀의 CI/CD 이해도를 높이기 위해 세미나를 개최하였습니다. 세미나에서는 현재 사용 가능한 도구와 각 도구의 특징, 장단점에 대한 리서치를 공유하고 GCP의 Cloud Build를 활용하여 빌드 및 배포 자동화 POC를 수행하기로 결정하였습니다.
POC를 통해 빌드 및 배포 자동화의 효과를 검증하고 개발팀과 공유했습니다. 이를 통해 배포 과정의 실수와 시간 소모를 크게 줄이며 안정적인 배포를 실현할 수 있었습니다. 또한 서비스의 안정성 향상 및 효율적인 빌드와 관리를 위해 Docker와 Artifact Registry를 활용하였는데, 빌드 파일을 직접 요구사항에 맞게 작성함으로써 롤백 및 관리 등을 용이하게 하였습니다.
실제 사용자가 있는 애플리케이션을 운영하면서 배포 과정의 실수와 시간 낭비를 최소화하는 것의 중요성을 직접 체감했습니다. 또한 자체 리서치를 통해 서비스의 안정성과 개발 생산성을 높이고, 이를 통해 조직 전체의 효율성을 향상시킨 결과물에 큰 보람을 느꼈습니다.
최선을 다하다보니... DevOps를 이만큼이나!!
실사용자가 있는 서버를 컨트롤한다는 것이 학부 생활을 하면서 겪을 수 없는 소중한 기회였습니다. 이 기회에 더욱더 집중하려고 노력했어요. 백엔드 개발을 하면서도 적극적으로 DevOps 관련 업무를 제안했고, 덕분에 다양한 운영 업무를 수행할 수 있었습니다.
서버 운영 업무를 수행하면서 최적화를 통해 서버 비용을 46% 절감하는 성과를 내기도 했습니다. 로드밸런서 비용은 50%로 줄이고, CI/CD로 배포 시간을 단축하기도 했어요. IaC 관련 업무를 수행하지 못한 점이 큰 아쉬움으로 남지만, 최선을 다했기에 후회는 남지 않아 스스로 다행이라고 생각이 들어요. 🙂
서버 관리에 대해 고민하던 중 질문이 굉장히 많이 생겼었는데, ICT 측에서 열어주신 오프라인 행사에 참여하여 네카라 현직자 분들께 질문하고 답변을 받을 수 있어 기뻤습니다. 특히 좋은 질문이라고 K8S에 대한 의견을 주신 멘토님께 진심으로 감사했습니다.
소중한 기회를 주시고 적극적으로 도와주신 개발팀이 있어서 값진 경험을 할 수 있었습니다.특히 애정을 가지고 수행했던 업무이기에 TMI 남발해봤어요
3) 백오피스 API 개발
특정 사용자 트래픽 알림 시스템 개발 및 적용 | Factory Method 패턴 도입
회사 서비스 특성상, 특정 사용자의 트래픽이 중요한 이슈를 발생시킬 수 있습니다. 이에 대응하여 관리자 페이지에서 수동으로 확인하던 작업을 개선하기 위해, 특정 트래픽이 발생하면 회사 공식 계정으로 메일이 발송되어 관련 팀원이 해당 트래픽에 대해 신속하게 인지할 수 있도록 시스템을 구축하였습니다.
기존의 메일 발송 코드는 특정 메일 한정 하에 작동하도록 구현되어서, 새로운 기능을 추가할 때 마다 중복된 코드를 계속 생산하게 되었습니다. 이러한 점을 개선하기 위해 Factory Method 패턴을 도입하고, 이후 새로운 메일 발송 기능을 개발할 때 매우 편리하다는 것을 몸소 느꼈습니다. 똑같은 기능을 만들더라도 장황하지 않고 컴팩트한 코드를 구현하는 것에 관심이 높아진 계기가 되었습니다.
코드 회고와 성장
메일 전송을 위한 message 프로퍼티를 사용하기 위해 문자열을 조작할 때 StringBuilder의 사용법을 실전에서 기술이사님께서 알려주신 점이 인상깊었습니다. Java 언어를 공부하면서 StringBuilder의 성능에 대해 배울 수 있었지만, 실전에서 어떤 접근방식을 가지고 적용하는지 배우고 적용하는 것은 또 다른 문제였기 때문에 인상깊은 배움으로 남았습니다.
뿐만 아니라 3학년 때 가장 열심히 공부한 과목이 OS였는데, 이때 배운 Async/Sync의 개념을 통해 spring의 @Async를 메일을 발송하는 sendMail에 적용을 해보았습니다. 구체적인 내용은 여기서 확인할 수 있습니다.
🤓 처음부터 제가 이러한 논리를 통해 코드를 작성했으면 100점이었겠지만...
코드회고를 통해 @Async를 어떤 상황에서 어떻게 사용하는지 알게되었습니다. 이 또한 개념적인 접근이 아닌 실무적으로 접근하는 방법을 채득하여, 능력을 키우는 면에서 소중한 시간이었습니다.
팀 내 코드의 일관성을 유지하는 것 또한 원활한 협업에 중요한 것을 깨달았습니다.
또한 개발팀 회고 회의에 참여하여 과도한 싱글톤은 오히려 좋지 않은 이유, JPA의 핸들링, 싱글톤과 컴포넌트를 판단하는 기준 등 실무자의 관점과 혜안을 배울 수 있었고, 이러한 기회와 성장을 이끌어주신 기술이사님께도 감사하다는 생각을 많이 하게되었습니다.
4) 데이터 기반 사용자 경험 개선
인턴십을 수행한 회사의 초기 서비스 성장을 위해서 사용자 행동 패턴 이해와 데이터 기반 의사 결정이 필요했습니다. 구글에서는 이와 관련한 분석 도구를 지원하고 있었고, 기회를 준 인턴십 회사에 어떻게든 기여하고 싶은 마음이 커서 이 업무를 적극적으로 수행하겠다는 의사를 표현했습니다!
책, 유튜브 등을 참고하여 GA(Google Analytics), GTM(Google Tag Manager)에 대해 학습하고, 적용 및 분석하면서 도구 사용법을 숙지해 나갔습니다. 또한, 고객에게 회사는 어떤 서비스를 제공할 수 있는지, 고객은 무엇을 원하는지 파악하기 위해 불을 키고 조사 및 연구를 했었습니다!!
전환율, 구매 전환 등에 대한 자료를 만들어 전사회의에 짧게 발표하기도 하고.. 실제로 성과도 이끌어냈던 경험입니다.
- 데이터를 기반으로, 소셜 로그인 우선 도입 제안!
- GTM Trigger로 결제 단계별 이탈률과 체류 시간을 모니터링하였습니다. 결과적으로 로그인 단계에서의 이탈이 빈번함을 확인하였습니다. 이를 기반으로 소셜 로그인 기능 도입의 우선순위를 높일 것을 제안하였고, 사용자 불편 해소 및 전환율 상승에 기여했습니다.
- 유입 경로 분석을 통한 콘텐츠 강화, 조회수 10만~20만회 증가!
- 페이지별 방문 통계와 사용자 행동 패턴을 분석하여 회사의 유튜브 채널이 가장 효과적인 유입 경로임을 확인했습니다. 이러한 데이터 기반의 인사이트를 통해 유튜브 채널의 전략적 중요성을 강조하였고, 사용자들이 특히 관심을 보이는 콘텐츠 유형과 주제를 파악하여 향후 콘텐츠 제작 방향성 수립 및 유입 상승에 기여했습니다.
감사하게도 노력에 결과도 따라주었던 업무였어요. 사실 이때 콘텐츠, 데이터에 흥미가 생겨 카드 뉴스 제작하고 업로드 하는 등 서비스 성장을 위해 제 능력을 총동원했던 것같아요..ㅎㅎ
5) 사내 세미나를 통한 프로그래밍 역량 강화 및 소통 능력 향상
개발자 인턴의 프로그래밍 역량을 강화하고 팀 내에서의 원활한 지식 공유 ∙ 코드 품질 향상을 목표로 두고 이펙티브 자바 도서를 활용한 세미나를 진행하였습니다. 백오피스를 개발할 때 남발했던 Stream 코드의 문제점을 시작삼아 세미나를 통해 직접 구현한 코드에 대한 기술이사님의 실무적 접근과 개선점에 대해 배울 수 있었습니다.
코드를 작성할 때는 어떤 자료구조/라이브러리가 있다는 것에서 멈추는 것이 아니라, 내부 구조나 설계, 내부 값, 메모리에 어떻게 적재되는지 등에 대해 구체적으로 알아야 함을 깨달을 수 있었습니다. 내부 구현 원리나 동작을 잘 알고 있는 것은 상황에 따라서 적절한 자료구조를 선택하고 도입함으로써 효율적인 기술 구현이 가능하도록 하기 때문입니다. 세미나를 통해 배운 JAVA 언어의 특성과 작성법을 주의하며 앞으로도 실무에 적극적으로 사용해야하고, 또 지속적인 학습만이 이러한 것을 가능하게 해준다는 것도 잘 알 수 있었던 경험이었습니다.
세미나를 진행할 때마다 자료와 함께 구두로 발표를 했어야 했는데, 회사의 실무자들 앞에서 발표를 진행하는 것은 정말 또 다른 떨림이라 처음엔 많이 힘들었습니다...(밤새 대본도 쓰고 계속 ppt도 수정하고 했던 😥)
그러나 매차례 거듭할 수록 더 효율적인 말하기에 대해서도 배울 수 있었습니다.
피드백을 받아 수용하고, 스스로 문제점도 고칠 수 있는 계기였어서 기술적인 면 이외에서도 성장을 거듭해 나갈 수 있었습니다.
마지막으로 내 자리와 일상사진들 🫶
인턴십하면서 스스로의 부족함을 많이 느끼고
회사에 피해가 가지않게
나름 1시간씩 일찍 출근해서 개인공부하고,,,,
체력을 기르기위해서 운동도 하고!
사회생활하는 방법 유튜브도 많이 찾아보고
특히 백엔드 지식을 함양하기 위해서
부단히 노력했습니다
그러다보니 산책 중에 낙엽이 팔에 떨어지는 것조차 즐거웠던ㅋㅋㅋ 많이 힘들었지만 크고작게 회사에 기여해서 뿌듯하고 감사했던 2023 인턴십을 잘 마무리하게되었습니다
ICT 인턴십 지원을 위해 찾아오신 분들께 많은 도움이 되었길 바라며, 궁금한 점이나 피드백은 언제든 댓글 남겨주시면 감사하겠습니다. 💕
'회고 & 후기 > 회고 & 후기' 카테고리의 다른 글
[Archive] 2024 정보처리기사 필기 합격 후기 (0) | 2024.02.22 |
---|---|
[인턴십] 2023 ICT 학점연계 인턴십 최종 합격 후기 (7) | 2023.08.24 |
[공모전] 2023 IT 창업 개발 동아리 멋쟁이 사자처럼 11기 해커톤 후기 (2) | 2023.08.24 |
[공모전] 2021 슬기로운 코딩생활 최우수상 후기 (1) | 2023.08.02 |
[Archive] 개발을 잘한다는 건 어쩌면.. 소프트웨어 공학 유심히 좀 들을걸 | 산학 프로젝트 중간 발표 후기 (2) | 2023.05.13 |