Skip to content

Commit

Permalink
2024-02-06 21:09:35
Browse files Browse the repository at this point in the history
Affected files:
src/content/blog/software-maestro-application.md
  • Loading branch information
gyunseo committed Feb 6, 2024
1 parent 75be9ac commit a0471c1
Showing 1 changed file with 9 additions and 12 deletions.
21 changes: 9 additions & 12 deletions src/content/blog/software-maestro-application.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,15 @@ description: 다른 거 할 것도 많은데, 너무 간절해지지 말자...

## SW분야의 전문성을 키우기 위해 몰입했던 경험과 도전이 무엇인지, 또한 이러한 성장과정을 통해 얻은 배움은 무엇인지를 서술하여 주시기 바랍니다

교내 OJ 및 경쟁 프로그래밍 플랫폼 웹사이트 유지 보수 및 개발에 참여하였고, 현재도 진행하고 있습니다.
해당 프로젝트에서 백엔드팀에 소속되어, 백엔드 개발을 했습니다. Node.JS와 Express 기반의 웹 애플리케이션 서버 프레임워크인 Nest.js를 사용하여 개발했습니다. 저와 저희 팀은 프로젝트를 길게 내다보고 스터디를 진행했었습니다.
클라이언트에서 데이터를 요청했을 때, Node.JS 와 DB에서 구체적으로 어떤 방식(예: TCP, HTTP, node의 스레드 풀, 그리고 DB 커넥션 풀링 등)을 통해 데이터를 처리하는지에 관해 공부했습니다.
이를 위해 MDN 공식 문서, 컴퓨터네트워크 책, 운영체제 책, DB 책 등을 찾아보면서 학습을 진행했습니다.
그 이후, 본격적으로 백엔드 개발에 투입됐을 때, 이러한 컴퓨터 과학의 기본기가 뒷받침돼 있어서, 기능 개발이나 버그를 수정할 때 여러 난관을 보다 수월하게 해결했습니다.
일례로, 프로젝트에서 단위 테스트를 할 때 더 이상 stub 테스트를 하지 말고, 실제 DB를 이용해 테스트 결과를 검증하는 테스트 코드를 작성하자는 문제상황이 제기됐습니다.
그래서 실제 DB를 유닛 테스트에 도입하는 과정에서 여러 시행착오가 있었고, 이때 저희가 공부했었던 여러 전산학 지식이 중요한 역할을 했었습니다.
한 개의 유닛 테스트가 종료됐을 때, DB가 원래 상태로 복구되는 것이 보장돼야 하는 이슈가 있었습니다.
이때, 유닛 테스트 별로 도커 컨테이너 띄우기, DB 트랜잭션 롤백 이용하기, 메뉴얼하게 원래 상태로 되돌리기 등과 같은 여러 해결책이 제시됐습니다.
저희 팀은 스터디를 했던 CS 지식(DB 트랜잭션과 커넥션 풀링 등)을 바탕으로 제시된 해결책들을 검증했습니다.
이를 통해 보다 신속하게 하나의 유닛테스트가 끝나고, DB를 메뉴얼하게 클리어해준다는 결론에 도달했고, 테스트 방법을 보다 더 나은 방향으로 개선할 수 있었습니다.
이런 경험을 통해, 개발 프로젝트에 참여하며 기술적 문제를 해결하는 능력을 키웠을 뿐만 아니라, 팀원들과 지속적으로 소통하며 진행하는 학습의 중요성을 깊이 이해했습니다.
교내 경쟁 프로그래밍 웹사이트 유지 보수 및 개발에 참여하였고, 현재도 하고 있습니다. 해당 프로젝트에서 백엔드 팀에 소속되어, 백엔드 개발을 했습니다. Node.JS와 Express 기반의 웹 애플리케이션 서버 프레임워크인 Nest.JS를 사용해 개발했습니다. 저희 팀은 단순히 코드를 작성하는 것을 넘어, 프로젝트에 대한 깊은 이해와 개인의 기술 능력 향상을 위해 체계적인 스터디를 진행했습니다.

예를 들어, 클라이언트에서 데이터를 요청했을 때, Node.JS 와 DB에서 구체적으로 어떤 방식(예: TCP, HTTP, 노드의 스레드 풀, 그리고 DB 커넥션 풀링 등)을 통해 데이터를 처리하는지에 관해 공부했습니다. 이를 위해 MDN 공식 문서, 컴퓨터 네트워크, 운영체제, DB 전공 서적 등을 찾아보면서 학습했습니다.

그 이후, 본격적으로 개발에 투입됐을 때, 이러한 컴퓨터 과학 기본기가 뒷받침돼 있어, 기능 개발이나 버그를 수정할 때 마주한 난관을 수월하게 해결했습니다.

일례로, 단위 테스트를 할 때 더 이상 stub 테스트를 하지 말고, 실제 DB를 이용해 테스트 결과를 검증하는 테스트 코드를 작성하자는 의견이 제기됐습니다. 그래서 실제 DB를 유닛 테스트에 도입했습니다. 이 과정에서 여러 시행착오가 있었고, 이때 저희가 공부했었던 여러 전산학 지식이 중요한 역할을 했습니다. 한 개의 테스트 시나리오가 종료됐을 때, DB가 원래 상태로 복구되는 것이 보장돼야 하는 이슈가 있었습니다. 이때, 유닛 테스트 별로 도커 컨테이너 띄우기, DB 트랜잭션 롤백 이용하기, 메뉴얼하게 원래 상태로 되돌리기 등과 같은 여러 해결책이 제시됐습니다. 팀원들은 스터디를 했던 CS 지식(DB 트랜잭션과 커넥션 풀링 등과 같은 개념)을 바탕으로 제시된 해결책을 검증했습니다. 결국 하나의 테스트 시나리오가 끝나고, afterEach Hook을 통해 수동으로 코드가 작성자가 직접 코드를 작성하여, DB를 클리어해준다는 결론에 도달했고, 테스트 방법을 보다 더 나은 방향으로 개선할 수 있었습니다.

프로젝트에 참여하며 기술적 문제해결 능력을 키웠을 뿐만 아니라, 팀원들과 지속적으로 진행하는 학습의 중요성을 깊이 이해했습니다.

## SW마에스트로 과정 참여를 통해 어떠한 프로젝트를 수행하고 싶은가요? 해당 프로젝트를 수행하기 위한 계획과 이루고자 하는 목표가 무엇인지 구체적으로 서술하여 주시기 바랍니다

Expand Down

0 comments on commit a0471c1

Please sign in to comment.