6. 서비스 진단하기
2022. 7. 12. 15:13
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - 웹 성능 측정 및 개선 - K6를 통한 부하 테스트 - grafana, cloudwatch를 통한 모니터링 - Nginx Access Log 설정 Jmeter와 NewRelic을 통해 부하 테스트를 하고 모니터링을 해본 경험이 있었다 (이전 글 참고: https://tong-dev.tistory.com/30?category=959546) 그때 부하테스트를 찾아보면서 K6, grafana를 들어본 적은 있었으나 사용해본 건 처음이었다 우선 두 개를 비교했을 때는 모니터링 툴은 느낌이 비슷했고 부하테스트 프로그램은 K6가 조금 더 편했던 것 같다 Jmeter가 그래픽 환경이라 편의성은 직관적이고 더 좋았지만 결과를 요약된 결과를 보거나 테스트를 돌릴 때 더 편했다 K6는 ..
5. 인수 테스트 기반 TDD
2022. 7. 11. 16:42
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - 인수 테스트 기반 리팩터링 방법 학습 - 인수 테스트 기반 TDD 학습 - 주 생성자 지정하여 주 생성자 한 곳에서 인스턴스 변수 초기화 관리 - 인터페이스를 활용하여 외부 라이브러리 의존성 제거 3주 차 미션에서 인수 테스트(ATDD)에 대한 맛보기를 경험했다면 이번 미션은 조금 더 심화 과정의 느낌이었다 가장 중요한 포인트는 ATDD를 통해 코드를 보호하고 그 안에서 레거시 코드를 리팩터링 하는 경험을 하는 것이었다 확실히 인수 테스트의 장점은 느낄 수 있었다 사실 인수 테스트의 장점이라기보단 테스트 코드의 장점이기도 했지만 리팩터링 하다가 기능이 작동하지 않는 부분이 생기면 빠르게 캐치할 수 있었다 인수 테스트를 미리 작성하게 되면 가장 큰 장점은 '다음은 어떤 ..
4. 그럴듯한 서비스 만들기
2022. 7. 11. 15:37
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - AWS 내부망/외부망 구축 방법 - 베스쳔 서버 활용 방법 - Nginx를 사용하여 Reverse Prox 구성 - 도커 기본 명령어 숙지 AWS에서 네트워크 망부터 구현해본 경험은 처음이라 많이 헤맨 것 같다 베스쳔 서버란 개념에 대해서도 처음 알게되었고 인프라 쪽은 비용 문제도 있고 해서 개인이 공부하기에는 어려운 부분이 있는데 AWS 계정도 지원해주고 너무 좋았다 (예전에 AWS 공부하려다가 20만 원 정도 날리고 계정 탈퇴했던 기억이...) 인프라 쪽은 항상 어려운 것 같다 문제가 생겨도 어느 부분이 잘못된 건지 찾기가 쉽지 않다..ㅜ 한 번에 되는 경우가 거의 없는 느낌 이번 미션을 진행하면서 가장 큰 복병이 있었는데 바로 집 네트워크 문제였다 AWS에서 네트..
3. 인수 테스트 주도 개발
2022. 7. 7. 17:54
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - ATDD 개발 방법 - RANDOM_PORT를 이용한 ATDD 코드 작성 - request, response 시 DTO 사용 지향 - UI -> Application -> Domain 방향으로 의존도 설정 ATDD 라는 개념을 미션을 통해 처음 접하게 되었다 해당 테스트 코드를 통해 비즈니스 코드를 한층 더 안전하게 보호할 수 있었고 제대로 작성한다면 요구사항 문서나 테스트 케이스 문서를 대신할 수 있을 만큼 좋은 방법론이었다 하지만 실무에서 ATDD + TDD를 모두 적용하려면 굉장한 공수가 든다고 한다 대부분의 회사에서는 ATDD를 사용하지 않기 때문에 본격적으로 사용하기 보다는 뒤에서 정리하게 될 내용인 코드의 리팩토링이 필요한 경우 인수테스트를 작성할 것 같다 ..
2. JPA
2022. 7. 7. 17:25
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - JPA 코드 활용법 - 영속성 컨텍스트 이해도 상승 - 테스트 코드 트랜잭션에 대한 이해도 상승 8개의 미션 중 가장 많은 학습시간을 필요로 했던 미션이었다 JPA를 사용해본적이 없는 나로써는 미션의 내용만으로는 이해하고 코드를 작성하기가 어려웠고 혹시나 해서 듣고있었던 김영한님의 인프런 강의가 큰 도움이 되었다 :) 하지만 완강한 상태가 아니었기 때문에ㅜ 빠르게 강의를 들어가며 이론적인 내용을 학습하고 코드의 대한 부족한 부분을 구글을 통해 학습하며 미션을 진행했다 이번 미션을 통해 JPA를 어떤식으로 사용해야하는지 많이 배웠다 어서 실무에서 사용해보고 싶다 :) Code / Feedback 🚀 1단계 - 엔티티 매핑 https://github.com/next-ste..
1. 로또 - TDD
2022. 7. 7. 16:40
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - 객체지향 생활 체조 원칙을 통한 클린코드 작성 - TDD 사이클을 준수하며 개발 - 객체지향적 설계 (도메인 로직에 집중) - 인스턴스 생성 시 static 생성 고민해보기 - 고정 값 상수 사용, 일급 컬렉션, 원시값 포장 - 객체/메서드 생성 시 책임에 대한 고민 TDD 사이클을 준수하며 개발한 경험은 사실 처음이었다 테스트 코드 작성도 프리 코스를 통해 맛보기 정도로 익혔을뿐 제대로 작성하기엔 많이 부족한 상태였다 첫번째 미션을 통해 테스트 코드 작성에 대한 자신감을 어느정도 얻을 수 있었고 뒤에 계속되는 미션들에서 많은 도움이 되었다 :) 모든 메서드의 테스트 코드를 네이밍 작업에 많은 신경을 썼고, 도메인 중심의 설계 및 구현이 되도록 많은 노력을 했다 이번 ..
0. 우아한 테크캠프 Pro를 시작하며
2022. 7. 7. 15:10
개발 교육/우아한 테크캠프 Pro
신청 과정 올해 상반기에 Nextstep에서 진행하는 우아한 테크캠프 Pro 4기에 지원했다 1차, 2차 온라인 프리코스를 통해 최종 합격한 60명만 교육에 참가할 수 있었기에 조금 걱정스러웠지만 꼭 참가하고싶은 교육이었기에 도전했다 우선 이 교육을 수강하고 싶었던 가장 큰 이유는 연차에 대한 부담이 느껴져서 였다 연차가 쌓여갈수록 회사에서 나에게 기대하는 스펙은 높아져만 가는데 개발자로써 성장하지 못한다는 기분이 들었다 업무 경험을 통해 얻을 수 있는 부분은 한계가 있었고, 새로운 지식들에 대해서는 경험이 필요했다 우테캠 프로가 이 부분을 어느정도 충족해 줄 수있는 교육이라고 생각했다 다행히 4기 교육 인원으로 선발되었고 9주간 정말 열심히 진행했다 :) 일정상 미션을 하면서 블로그 작성까지 같이하는건..
클린코드 - 8.경계
2022. 7. 6. 21:00
개발 서적/클린코드
1. 외부 코드 사용하기 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다 개발하다 보면 패키지나 오픈 소스를 사용하게 되는데 이런 소스를 제공하는 입장에서는 더 많은 환경에서 돌아갈 수 있도록 적용성을 넓히려고 애쓴다 하지만 사용자 입장에서는 자신의 요구에 집중하는 인터페이스를 바라게 된다 이런 차이에서 경계가 발생한다 java.util.Map 을 예로 들어보자 Map은 마음만 먹으면 사용자는 어떤 객체 유형도 추가하거나 삭제할 수 있다 Map을 만들어서 여기저기 넘긴다고 가정한다면 어디서든 삭제나 추가가 가능하다는 문제가 생긴다 또한 Map 인터페이스가 변경될 경우 수정할 코드 양이 상당히 많아진다 Map sensors = new HashMap; Sensor s = sensors.get..
클린코드 - 7.오류 처리
2022. 7. 5. 00:41
개발 서적/클린코드
1. 오류 코드보다 예외를 사용하라 public class DeviceController { ... public void sendShutDown() { DeviceHandle handle = getHandle(DEV1); // 디바이스 상태를 점검한다. if (handle != DeviceHandle.INVALID) { // 레코드 필드에 디바이스 상태를 저장한다. retrieveDeviceRecord(handle); // 디바이스가 일시정지 상태가 아니라면 종료한다. if (record.getStatus() != DEVICE_SUSPENDED) { pauseDevice(handle); clearDeviceWorkQueue(handle); closeDevice(handle); } else { logger..
H2 DataBase 초기 접속
2022. 6. 9. 15:49
개발 지식/Etc.
데이터베이스 파일 생성 방법 JDBC URL: jdbc:h2:~/DB이름 최초 접속 시 파일 생성 반드시 url에 세션키 값이 있어야함! JDBC URL: jdbc:h2:tcp://localhost/~/DB 이름 이렇게 접속 다음 접속 부터 네트워크 모드로 정상 접속 가능