전체 글
-
커리어를 위한 도전 - 아주대학교 정보통신대학원일상 2023. 7. 6. 13:46
미래의 나의 커리어에 대한 고민과 대학원 진학 동기 2018년 개발자로 커리어를 처음 시작해서 백엔드 개발자로 커리어를 쌓은지 벌써 3년 10개월이 되어간다. (중간에 퇴사하고 취준 기간이 있었기 때문에 쭉 일을 지속하진 못했다) 처음에는 요구사항이 주어지면 모르는게 너무 많았고 알더라도 기능 구현을 하는데만 신경썼었는데 지금은 나름 주어진 요구사항은 다 처리할 수 있고 팀원들과 같이 코드 재사용성, 확장성 등을 고려하면서 클린 코드를 지향하고 더 좋은 프로덕트를 위한 개발을 하고 있는거 같다. 개발을 하다보면 불과 1년전까지만 해도 공식 문서 또는 스택 오버 플로우에서 많은 정보를 얻었던거 같은데 최근에는 ChatGPT를 통해서 몰랐던 정보를 얻고 해결하는 경우가 많아졌다. ChatGPT 사용 빈도가 ..
-
리팩터링 2판스터디노트/도서 2023. 5. 10. 08:58
이 책을 선택한 이유 실무에서 개발을 하는 경우 레거시 코드에 대한 고민은 현업 개발자라면 누구나 가지고 있을거라고 생각한다. 나 뿐만 아니라 팀원들도 레거시 코드 리팩토링에 대해서 여러번 이야기를 했었다. 팀원들끼리 스터디 이야기가 나오고 있는 상황이었고 팀원 중 한명이 자바스크립트 기반으로 설명된 리팩토링에 관련한 책을 추천하였다. 우리가 개발한 프로덕트는 자바스크립트로 개발하였다. 보통 자바를 베이스로 설명된 책들이 많은데 자바스크립트를 베이스로 리팩토링에 대해 설명해 준 책을 보고 팀원들은 모두 동의해서 스터디 책으로 리팩터링 2판을 선택하였다. 학습 계획 레거시 코드들은 OOP 개념들을 적용하지 않고 FP로만 개발이 되어있는 상태이다. 처음에는 '개발에 반드시 OOP를 사용해야 하는건 아니니까 ..
-
2022년 회고 - 취준부터 2022년까지일상 2023. 4. 6. 17:06
나의 취준 시기부터 첫번째 회사까지 예전 취업 준비를 하면서 막연히 대학교를 졸업했으니까 내가 전공한 학과와 관련된 직종의 회사에 취업하는 것이 당연하다고 생각했었다. 또 취업을 하기 위해서는 학점과 자격증이 중요한줄 알았기 때문에 (물론 좋은 학점과 자격증 유무는 취업시장에서 유리하게 작용한다고 생각한다.) 열심히 한 결과 다행히도 졸업 후 나쁘지 않은 학점과 정보처리기사 자격증을 얻을 수 있었다. 왜그랬는지 모르겠지만 당시에 졸업 후 바로 취업을 해야한다는 강박관념에 사로잡혀 있었기 때문에 가지고 있는 스펙으로 정말 많은 회사에 지원했다. 운이 좋게도 두번째 면접을 본 회사에 최종 합격 통보를 받아 입사하게 되었다. 회사 위치가 오리역이었기 때문에 집과의 거리가 너무 가까워 더 좋았었다. 그런데 이게..
-
Mongoose를 사용하는 이유가 뭘까?스터디노트/알게된 내용 정리하기 2023. 3. 21. 14:16
팀에서 Database로 MongoDB를 사용하고 ODM으로 Mongoose를 사용하고 있다. 개인 프로젝트에서 MySQL을 사용하고 ORM으로 sequelize를 사용할 때와 팀에서 ODM으로 Mongoose를 사용하면서 ORM, ODM을 사용하는 근본적인 이유가 궁금해졌다. 왜냐하면 프로젝트 요구사항을 파악했을 때 ORM, ODM을 사용하지 않아도 있을 수 있다고 생각했기 때문이다. ORM, ODM을 사용하게 되면 DB에서 조회할 때 document를 자바스크립트 객체로 바꿔준다는 것 외에 다른 자세한 이유도 학습하기로 했다. Mongoose란?? MongoDB를 위한 ODM (Object Data Modeling) 라이브러리 데이터 모델링 간소화 스키마 기반 접근 방식으로 데이터 일관성을 더 쉽게 ..
-
DDD(Domain Driven Design)이란?스터디노트/알게된 내용 정리하기 2023. 3. 16. 15:48
Domain이란? 해당 비즈니스에서 다루는 분야 DDD(Domain Driven Desgin)이란? 비즈니스 도메일별로 나누어 설계하는 방식 데이터 연관 관계보다는 도메인을 기준으로 설계하는 방법 ex) 대중교통과 리뷰가 1 : N의 관계를 갖는다고 하면 데이터 기준 설계에는 맞지만 도메인 주도 설계에서 직접적인 연관 관계를 맺는 것은 옳지 않다. 도메인 복잡도 ∝ 코드 복잡도 핵심 목표 : Loose coupling, High Cohesion (모듈간 의존도 최소화, 응집도 최대화) Strategic Design (개념 설계), Tactical Design (구체적 설계) 참고자료 https://happycloud-lee.tistory.com/94 DDD 핵심만 빠르게 이해하기 마이크로서비스의 설계 방..
-
Joi 17.8.1 업데이트로 인한 .email() 메서드 에러시행착오 2023. 2. 21. 17:02
Joi란 request 유효성을 확인하기 위한 유효성 검사 라이브러리 Joi 17.8.1 버전 17.8.1 버전으로 업데이트 되면서 package.json에 @hapi/address 모듈이 추가됐다. email() 메서드가 구조가 변경 됐다. email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } }) 에러 원인 팀에서 사용하고 있는 Joi 버전은 17.4.1버전으로 구버전이었다. email() 메서드를 사용할 때 다음과 같이 사용하고 있었다. email: Joi.string().email({ tlds: { allow: false } }), 해결 방법 yml파일을 통해 Azure App Service에 배포할 때 ..
-
MongoDB findOne() without _id & MongoDB에서 find와 aggregate 성능 차이스터디노트/DB 2023. 1. 26. 09:39
findOne()으로 조회 시 _id 제외하기 const collection = 'yourCollection'; const result = await collection.findOne( { 조건, }, { projection: { _id: 0 } } ); find와 aggregate 성능차이 Sharding 되지 않은 MongoDB 서버에서는 find와 aggregate 성능 차이가 없다고 한다. find 쿼리나 복잡한 aggregate 쿼리 모두 단일 Shard에서 실행되고 결과를 클라이언트에 전송한다. 참고자료 findOne() without _id : https://stackoverflow.com/questions/48294613/mongo-find-function-wont-exclu..