본문 바로가기
728x90
반응형

분류 전체보기362

24.04.07~24.04.14 업무 B사 외부 가이드 개발 B사의 O팀에게 제공하기로 한 제품은 1) 자사 서비스 내부 가이드 2) 외부 가이드 2개였다. 지난주 1)에 대한 개발을 완료해 2)에 대한 테스트 및 가이드 생성을 시작했었고, 이를 이어서 이번 주 전체를 각종 테스트와 버그 픽스에 투자했다. B사 추가 요구 사항 구현 현재 O팀과의 POC는 요구 사항 논의 → 기능 개발 → 공유 및 피드백 을 순환하는 형태로 진행된다. 즉 한 번의 기능 개발을 완료하면, 그에 대한 피드백을 전달받는데... 이번 주 역시 새롭게 생겨난 요구 사항을 몇 가지 구현했다. SDK를 통해 제공하는 온보딩 실행 모듈에 몇 가지 기능들을 더 추가했고, O팀에서 사용 중인 AWS 링크와의 호환을 위해 외부 가이드 링크에 URL 경로 관련 연동 기능을 .. 2024. 4. 14.
[jest] jest dom을 통한 DOM 객체 동작 테스트 하기 Backgrounds 현재 개발 중인 서비스에서는 사용자가 생성한 데이터를 통해 웹 페이지에서 특정 요소(HTMLElement)를 조회하는 기능을 제공하고 있습니다. 이때 해당 요소를 찾는 알고리즘이 제법 복잡하고 예외 케이스가 많이 발생해, 코드를 수정할 때마다 고객사 페이지에 직접 접속해 정상 동작 여부를 확인하는 불편함이 존재했습니다. 그리고 이로 인해 1) 개발 소요 시간 증대 2) 적극적인 리팩토링 어려움 (수정이 발생하면, 기존 잘 되던 케이스가 안될 것이라는 두려움) 과 같은 문제들이 발생했습니다. Solutions 최선의 방안은 모든 고객사 페이지를 자동으로 크롤링하면서, 로직이 정상 동작하는지 확인하는 것이겠으나... 하루아침에 이 정도의 자동화 테스트를 도입하기엔 현실적인 무리가 있었습.. 2024. 4. 10.
24.03.31~24.04.07 업무 SDK 개발 및 제공 POC 중인 B사의 새로운 요구사항을 개발했다. B사에서는 새로운 기능과 관련된 안내 모달이 사라진 후 온보딩을 실행하고 싶어했고 현재 제공 중인 기능만으로는... 이러한 요구사항을 구현할 수 없었다! 모달 종료의 경우, B사 서비스 자체적으로 구현한 로직이 존재했고 (ex 키보드를 눌러 종료, 백그라운드를 클릭해 종료) 해당 로직이 실행될 때 우리 서비스가 동작하기 위해서는 → 코딩을 통해 처리하는 방법 밖에는 존재하지 않았다. 사실 이전에서 이러한 논의가 나왔었지만 노코드툴 이라는 간편성을 포기하기 어렵다 판단해 우선순위를 낮췄었다. 하지만 어찌되었든 B사의 요구사항을 충족하는 것이 무엇보다 중요했기에... 우리 서비스를 실행할 수 있는 모듈을 SDK 형태로 제공하기로 했다.. 2024. 4. 8.
24.03.24~24.03.31 업무미리 보기 기능 개발서비스 동작을 위한 기능 개발에 우선순위가 밀렸던, 미리 보기를 개발했다. 이전에 만들어 둔 operator 모듈 덕분에, 빠르게 요구 사항을 구현할 수 있었다. (실제 개발은 이틀 정도? 이전 버전을 생각하면 엄청나게 빠르고, 안정적으로 구현할 수 있었다) script-package 테스트 도입server 측에서 사용할 모듈을 제공하는 script-package를 개발하는데, 패키지를 배포하지 않고는 동작을 확인할 수가 없어 개발 속도가 더뎌지는 문제가 있었다. → 코드 동작 실시간 확인 + 유지보수성 증대 를 위해 Jest를 사용한 테스트를 도입하기로 결정! 가장 중요한 각 Publish 필터링 모듈에 대한 테스트 코드를 작성했다.해당 패키지를 사용하는 서버 개발자 분들의 적극.. 2024. 3. 31.
단위 테스트 - 고전파와 런던파, 그리고 개인적인 견해 Backgrounds사내 package를 개발하며 테스트 코드를 작성하던 도중, 이런 일이 있었습니다. 입력받은 데이터를 서비스 내부 정책에 따라 필터링하는 모듈이 존재했고, 해당 모듈은 내부 정책 관련 로직을 처리하는 다른 모듈을 의존성으로 주입받고 있었습니다.class Module { filterPoliciy: Policy constructor (filterPoliciy: Policy) { this.filterPoliciy = filterPoliciy } filter(data:Data): Data | null { // 해당 메서드 내부적으로 Policy interface 사용 ...this.filterPoliciy.isIdExist() } } 아래와 같은 형태로 테스트 코드를 작성했습니다.descri.. 2024. 3. 28.
[Github Actions] PR 병합 시, 자동으로 package publish 하기 Backgrounds 현재 사내 서비스에서 공통적으로 쓰이는 모듈들을 github package로 제공하고 있습니다. git flow 전략에 따라 develop - staging - production 환경으로 구성되어 있으며, 각 개발 사항을 develop branch에 병합한 뒤, staging 환경에서 테스트한 후, production branch에 병합합니다. 이때 해당 패키지의 새로운 버전을 publish 하기 위해서는 다음과 같은 과정이 필요합니다. production 브랜치 내 PR 생성 → review 및 merge 개발자 local 환경에서 production branch 이동 → build + publish 해당 배포 사항 직접 공지 Problems 위 과정에는 다음과 같은 문제점이 존.. 2024. 3. 26.
[Github Actions] Workflows에서 복수개 env variables 사용하기 배경 github actions를 통해 사내 npm 패키지를 자동으로 빌드-배포-릴리즈 하고자 했습니다. production branch에 버전과 관련된 PR이 병합되면 패키지 버전 변경 → build → publish → release 를 수행하는 workflow를 작성했는데... 여기서 env 파일, 즉 환경 변수 관련 문제와 마주했습니다. export class DataFetcher { private BASE_URL = process.env.BASE_URL } 다음과 같이 환경 변수를 참조하고 있으며 // package.json { "scripts": { "build:prod": "DOTENV_CONFIG_PATH=.env.production node -r dotenv/config scripts/e.. 2024. 3. 25.
24.03.17~24.03.24 업무 신규 기능 배포 지난주 개발했던 신규 기능을 production에 배포했다. 수요일에 B사를 방문해 해당 버전을 시연하기로 했어서 월-화 동안 staging 환경에서 테스트 + 버그 수정을 반복해야만 했다. 개발 당시 다른 사내 서비스에서 테스트할 때는 별 문제가 없었는데 막상 staging 환경에서 고객사인 B사의 서비스로 테스트를 해보니 정상적으로 서비스 진행이 되지 않는, 버그성 동작들이 발견되었다. 타들어가는 속을 삼키며 황급히 원인을 파악했고 페이지 이동이 아닌, nav tab 간 이동이 발생하면서 1) 각 target 요소들을 정확히 조회하지 못하거나 2) 제어 중인 요소가 사라졌다 다시 생성되는 경우 가 있음을 발견했다. trigger 관련 알고리즘을 수정하고, event binding.. 2024. 3. 24.
전방 십자인대 재건술 3달 차 후기 (재활 시작!!) 보조기를 뗐다!!! 의사 선생님 왈: 아직 뛰는 건 안되지만, 가벼운 운동으로 허벅지 힘을 기르도록 하세요. (실내 자전거 같은 게 좋단다. 스쿼트를 추천!)보조기를 떼고 처음으로 밖을 걷는데... 어찌나 다리가 가볍던지. 물론 보조기를 때기 전에도 불가능한 건 아니었지만, 계단을 오르내린다던지, 버스를 탄다던지 하는 일상생활이 훨씬x1000 편해졌다. 이제 남은 건 → 재활을 하면서 다리 근육을 원상복구 시키는 것!커뮤니티 헬스장이 몇 주 뒤에 문을 연대서 그전까진 유튜브를 보며 홈트레이닝을 하기로 했다. 주로 전신 운동 위주의 영상을 따라하면서 가끔 지나치게 활동적이거나 무릎을 많이 접는 자세가 나오면 생략하며 진행하는데, 15분~20분 정도의 짧은 영상인데도 기초 대사량 저하 + 근육 없어짐 + 무.. 2024. 3. 22.
728x90
반응형