본문 바로가기

전체 글172

Production Server(운영 서버)와 아키텍처 (Feat. AWS) 이 글은 책 AWS 인프라 구축 가이드 - 김담형 1,2장과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 Production Server(운영 서버) Production Server(운영 서버)는 실제 사용자들을 대상으로 실제 서비스하는 서버이다. 보통 로컬, 개발 서버는 테스트 목적으로 사용되어 문제가 발생해도 큰 문제가 발생하지 않지만 운영 서버 문제 발생한다는 것은 해당 서비스의 치명적인 문제다. 운영 서버는 장애가 발생하면 안 되고 빠르게 응답해야 하며 많은 트래픽에 대응할 수 있어야 한다. 운영 서버 관리는 크게 3단계로 나뉜다. 1. 환경 구성 : 서비스할 코드를 구동시킬 수 있는 서버 인프라 구축 2. 코드 배포 : 구성한 환경에 최신 버전의 코드(서비.. 2022. 3. 26.
매개변수가 유효한지 검사하기 이 글은 책 이펙티브 자바 3판 Item 49와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 메서드, 생성자들의 입력값이 특정 조건을 만족하길 바란다. 예를 들어 인덱스 값은 음수 X, 객체 참조는 null이 아니어야 한다. 보통 메서드, 생성자의 몸체가 실행되기 전에 매개 변수 확인한다면 잘못된 값이 넘어왔을 때 즉각적, 깔끔한 방식으로 예외를 던질 수 있다. 어떻게 유효한지 검사해야 할까? public, protected 메서드 보통, 몸체(주요 로직) 실행되기 전 상단에서 매개변수 값 확인 후 예외를 던진다 자바독에 @throws, 예외 경우를 작성한다. public 또는 protected 메서드는 패키지 개발자가 아닌 외부 사용자가 사용한다. 따라서 매개변수.. 2022. 3. 21.
[주간 회고] 22.03. 3주차 - "스프링과 뽀모도로"🧁 📚 배운 것 월요일 (03.14) - 프로젝트 스프링 카페 Step2 PR(PR, 피드백 적용) - 프로젝트 스프링 카페 Step3 30% 구현 - 호눅스 강의 : AWS에 DB 띄우고 원격 접속하기 - 김영한님의 스프링 MVC 1, 세션 2 수강, 구현 (소스코드) - 동료 코드 리뷰 도와주기 (싱글톤 클래스에 멤버변수 공유하고 있는 문제 발견과 해결) 화요일 (03.15) - 프로젝트 스프링 카페 Step3 80% 구현 - 김영한님의 스프링 MVC 1, 세션 3 수강, 구현 - 운동 수요일 (03.16) - 프로젝트 스프링 카페 Step3 완료, PR, Heroku 배포 사이트 - 글작성 : Spring boot에서 H2 DB 3가지 모드 사용하기(embedded, In-Memory, Server) .. 2022. 3. 20.
단위 테스트란 무엇일까? 런던파와 고전파의 차이점 🆚 이 글은 책 Unit Testing(단위 테스트) 2장과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 목차 - 런던파? 고전파? - 단위 테스트 정의 - 런던파의 테스트 격리 - 고전파의 테스트 격리 - 런던파와 고전파의 장단점과 차이 - 통합 테스트 - 개인적 결론 런던파? 고전파? 단위 테스트(Unit Test)는 무엇일까? 단위 테스트는 두 가지 견해 고전파(classical school)와 런던파(London school)로 구분할 수 있다. 고전파는 켄트 백의 테스트 주도 개발(TDD)으로 원론적으로 접근하는 방식 때문에 '고전'이라고 한다. 런던파는 런던 프로그래밍 커뮤니티에서 시작됐다. 목 추종자(mockist)라고도 불린다. 두 분파는 어떤 차이로 단.. 2022. 3. 19.
./gradlew bootRun vs java -jar로 실행할 때의 차이점 (리소스 경로) 😰 상황 ./gradlew bootRun으로 스프링 부트 실행할 때 동적 페이지 리소스 경로에 문제가 없었다. 하지만 heroku 배포할 때 ./gradlew bootRun으로 자바 프로젝트가 실행되는 것이 아니라 빌드된 jar 파일을 실행하여 작동한다. 이때 java -jar로 실행할 때 동적 페이지 리소스 경로에 문제가 발생하였다. 🤔 원인 ./gradlew bootRun 실행과 java -jar jarPath로 실행할 때 리소스 위치가 다르다. gradle의 경우 좀 더 유연한 기능을 제공하지만 java -jar 로 실행할 때 문제가 될 수 있다. ✅ 해결 java-spring-cafe 프로젝트 commit 중 : fix 동적 리소스 경로 에러 수정 만약 resource/index.html을 동적 .. 2022. 3. 19.
Spring boot에서 H2 DB 3가지 모드 사용하기(embedded, In-Memory, Server) 잘못된 내용이 있습니다. 참고용으로만 사용해주시기 바랍니다. 글을 내리려다 꾸준히 오시는 분들이 계셔서 그대로 유지하고 있습니다. 감사합니다. 환경 : Java 11 + Spring Boot 2.6.2 + Gradle 데이터베이스 : H2 DB H2 DB의 3가지 모드 H2DB는 자바 기반 오픈소스 RDBMS(관계형 데이터 베이스 관리 시스템)이다. H2DB Cheat Sheet를 살펴보면 세 가지 용도를 찾을 수 있다. 1. Embedded Mode 2. In-Memory Mode 3. Server Mode Server Mode Server Mode는 공식 사이트에서 H2를 Plafform-Independent 버전을 다운로드하고 h2/bin/h2.sh를 터미널로 실행하면 h2가 TCP 통신을 할 수.. 2022. 3. 16.