My Interest

코코블루·2022년 8월 9일
0

가족에게 일이 생가면서 갑자기 나에 대해 고민할 시간이 많이 생겨버렸다. 그런데 머리로만 생각하고 안 적으니깐 먼가 챗바퀴처럼 도는 느낌이라서 한 번 정리를 해본다.


메인

"제일 자신있는 것이 뭔가요?"라고 물으면 나올 것들이다. 포지션은 백엔드(Backend)이다.

Java

개인적으로 Java를 메인으로 사용하게 된 이유는 학교 생활하면서 있었다. '객체 지향 프로그래밍'을 수강하면서 Java를 사용했는데 실 코드를 작성하는 과제에서는 높은 점수를 받았지만, 개념을 확인하는 지필 고사에서 점수가 매우 낮아 부끄러운 성적을 받은 적이 있다. 교수님도 이 점수의 주인공이 나인걸 보고 많이 의아해하셨던 기억이 있다. 즉, 코드는 짤 줄 아는데 내가 사용하는 것이 클래스인지, 패키지인지, 뭔지 모른다는 것이다. 그러면 커뮤니케이션을 할 때 문제가 생긴다고 피드백을 해주셨었다.

그런 성적을 받고 그런 내가 부끄러워서 개념에 대해서 많은 공부를 했다. 덕분에 Java를 넘어 OOP에 대한 개념을 숙달하고 이 개념을 적용하기 위해서 과제에 주석을 달면서 공부했었다. 그래서 Java가 메인이 됐었다. 덕분에 다른 언어 Python이나 JavaScript를 공부할 때도 "이런 개념을 여기서는 어떻게 구현할 수 있는가"만 검색하고 이해하면 되니깐 배움이 좀 더 수월해졌다.

Spring Boot (Framework)

Spring도 위의 다음 학기에 나온 키워드인데 Java로 웹 페이지를 구현할 수 있다는 것과 MVC 패턴이 어떻게 적용되는 개념인가 하여 방학 기간을 통해 공부를 했었고, 토이 프로젝트나 과제 등에 사용하고 있다. 처음에는 Spring Framework를 사용하다가 Spring Boot가 Tomcat이 내장되어 있어 빌드 및 실행이 간편하여 Spring Boot를 사용하고 있다. 그 외에도 개인적으로 문법 하이라이팅 등 IDE의 도움을 받을 수 있는 부분이 있기 때문에 Class 기반 Configuration이 기본이라서 편하다고 생각한다.

MySQL

이 것도 학교에서 처음 배웠는데, 개인적으로 NoSQL보다는 RDBMS가 더 편한다고 생각하는 입장이다. 그래서 개인 프로젝트에서는 호환되는
mariaDB를 사용하고 있다.

Git

Git은 기본 소양이지 않나 생각한다. 이전에는 단순히 소스 저장소라고 생각했는데, 과제나 프로젝트 등을 통해 협업으로서 사용하게 되다보니 Local Repo와 Remote Repo의 차이부터 시작해서 Branch 분기, PR 등 협업에 없어서는 안 될 도구가 되었다.

특히, Github = Git이라고 생각하던 시절이 있었지만, 팀장으로서 협업을 주도해야할 때 어떤식으로 할지 고민하면서 공부를 했었고, 성공적으로 할 수 있었다.

CI/CD

CI/CD는 회사를 다니면서 알게된 명칭인데, 인적 자원이 모자란 상황에서 반복적인 작업을 자동화하여 실수를 줄이는 것이라고 이해하였다. 회사에서는 CircleCI 주력으로 했었고, Github Action, RunDeck, Bitbucket까지 다양한걸 사용했봤었다. 특히, 해당 툴을 On-Premise로 구축하는 내용까지.

개인 용도로 사용할 때에는 Github Action을 사용하고 있는데, 자주 적용하는 케이스는 아래와 같다.

  • 특정 Branch에 Commit이 올라오거나 PR이 올라왔을 때, 테스트 진행
  • Release하면, 자동으로 컴파일 한 뒤, Docker Image로 빌드하여 Github Packages(or Docker hub)에 배포
  • Build가 올라오면 테스트 서버의 버전을 업그레이드 (테스트 이후, 수동으로 메인 서버 업그레이드)

Docker, K8S

Docker의 경우에는 회사를 다니면서 개념을 심화했었는데, MSA의 핵심 기술로 떠오른다는 사실과 더불어 배포, 빌드, 트러블 슈팅 등 많은 것을 경험했다.

기존에는 기본적인 이론만 알고 있었지만, 회사 근무를 통해 내부 파일 시스템, PID/GID 등 권한 관리, 네트워크 특히, IP와 서브넷 등에 대해서 심화할 수 있었다.

기타

mustache, thymeleaf, jsp


실제 직무 경험

짧은 기간 회사를 다니면서 사용한 것들이다.
포지션: 서버, DevOps
기술 스택: Linux(Ubuntu, CentOS), Docker, K8S, MySQL, CI/CD, Shell

Linux의 경우에는 기존에도 사용할 줄 알았지만 서버 운영의 관점에서 포트 관리, 프로세스 관리, 트러블 슈팅 등 운영 전반에 관해서 경험을 습득했다. 후술할 Docker를 통해서도 리눅스의 이해를 심화할 수 있었다.

내부 챗봇을 변경하는 것부터 CI/CD 파이프라인 구축, 인증서 자동 갱신 등 업무 자동화를 위해 프로그래밍을 하였었다.

사회 생활은 덤이고, 책임님들을 통한 기간을 잡는 노하우, 발생할 수 있는 이슈 등에 대해서 경험할 수 있었다.

짧은 기간을 다녔지만 안목을 넓혀주고 많은 기술을 알려주시고, 업무 시간 외에도 공부할 수 있게 테스트 배드를 열어주셔서 많은 공부를 할 수 있었다. 감사합니다!!!


관심 갖고 보는 중!

이번엔 관심을 갖고 보는 중인 것들이다. 코드는 짤 줄 알지만 뭔가 나의 메인이라고 하기에는 쉽지 않은 것.

JavaScript

JS의 경우에는 과제를 수행하면서, 간단하게 깨작이는 정도였지만 최근에는 NodeJS, React, Vue.js 등 BE, FE를 막론하고 사용되고 있음을 알게되었다.

React

BE의 경우 내가 메인으로 Spring Boot를 사용하고 있기에 FE를 React로 구현할 수 있게 하고자한다. 개인적으로 만들었던 Twitch to Discord Webhook 알림 서버의 경우, 다른 분들도 쓸 수 있게 구현하였지만 현재로서 FE가 구현된 것이 없어 직접 설정할 수 없는 불편함이 있다. React를 사용하게 되면 직접 설정할 수 있게 할 수 있지 않을까 싶다.

profile
Have A Happy Coding Time!

0개의 댓글