Discovery Server (Spring Cloud Eureka)
카테고리 없음2025. 2. 27. 20:34Discovery Server (Spring Cloud Eureka)

Service Discovery란MSA환경에서 동적으로 변경되는 서비스들의 위치(IP, 포트)를 자동으로 찾고 연결하는 기술을 의미기존 모놀리식 아키텍처에서는 모든 기능이 하나의 애플리케이션에 포함되어 있기때문에 내부에서 직접 호출함으로써 Service Discovery와 같은 역할이 필요하지 않았음MSA는 서비스가 여러개로 분리되어있기때문에 서비스 간의 네트워크 통신이 필요하게 됨만약 Service Discovery가 없는 MSA라면 서비스가 변경될 때마다 수동으로 IP를 변경해야하고 이는 운영이 매우 복잡해지며 장애 발생 가능성이 증가하게 된다.Discovery Service 없이 MSA를 사용할 경우예를 들어서 기존 MSA서비스에서 UserService와 ProductService만 운영해왔었는데 ..

인텔리제이 Spring.io없이 서블릿, 톰캣 웹 개발환경 셋팅하기
카테고리 없음2024. 11. 20. 23:49인텔리제이 Spring.io없이 서블릿, 톰캣 웹 개발환경 셋팅하기

평소에 Spring Framework, JPA등 완성도 있는 프레임워크들을 사용하다보니 프레임워크에 정확한 동작원리를 깊이 있게 알지 못 한다는 느낌을 받았고최근 다양한 프레임워크 위주로 취업준비를 하는 개발자들에 대한 일침아닌 일침을 날리는 유튜브 쇼츠 영상을 보았었다.댓글을 확인해보니 새로운 기술, 다양한 프레임워크를 통해 편리한 개발을 지향하는 것은 좋지만 정확한 원리를 알지 못하고 주먹구구 식으로 프레임워크를 사용하는 신입개발자들이 많다는 댓글을 보았다.아무래도 프레임워크라는게 반복적으로 사용되는 코드들을 미리 구현하여 편리하게 사용하도록 인터페이스화 한 것이기때문에 내부코드를 들여다 볼 기회가 거의 없기때문에 사용이유에 대해서 정확한 정의를 내리는 것이 쉽지 않았다.물론 댓글 내용중 프레임워크 ..

[Git] gitignore와 관리해야할 파일
Git2024. 11. 8. 04:33[Git] gitignore와 관리해야할 파일

.gitignore 파일은 Git의 root 디렉토리에 저장되어 Git Repository에 추가되지 않아야하는 폴더나 파일들을 정의하는 파일이다.예를 들어서 스프링 애플리케이션에서 secret-key와 같은 값을 가지고 있는 application.properties파일을 Git을 사용하여 관리하고 Remote Repository에 올릴 경우 내부에서 관리해야하는 secret-key를 외부에 공개함으로써 보안 문제가 발생할 수 있는 것이다따라서 Git을 통해 프로젝트를 관리할 때 가장 먼저 gitignore파일을 정의하여 어떤 파일들을 Git을 통해 트랙킹 하지 않도록 할 것인지 정의하는게 우선이다 무시할 파일 등록하기그렇다면 어떻게 파일을 등록하고 무시할 파일의 범위를 지정하는 방법에 대해 알아보자개발..

[Java] 람다 표현식과 함수 인터페이스
Language/Java2024. 11. 8. 02:21[Java] 람다 표현식과 함수 인터페이스

람다란 무엇인가?람다 표현식은 익명 클래스처럼 클래스의 이름이 없고 메서드를 인수로 전달할 수 있으므로 익명 클래스와 유사하다익명: 이름이 없기때문에 익명의 특징을 갖는다함수: 메서드처럼 특정 클래스에 종속된것이 아니기때문에 함수라고 부른다. 하지만 메서드처럼 파라미터, 바디, 반환형식, 가능한 예외 리스트를 포함한다전달: 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다간결성: 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다Comparator byWieght = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight());..

[Git] Commit Message Conventions
Git2024. 10. 30. 19:42[Git] Commit Message Conventions

참조링크 - https://gist.github.com/stephenparish/9941e89d80e2bc58a153한국어 정리링크 - https://www.conventionalcommits.org/ko/v1.0.0/커밋 포맷 자동화 적용방법 링크 - https://medium.com/tunaiku-tech/automate-javascript-project-versioning-with-commitizen-and-standard-version-6a967afae7starndard-version 공식문서 - https://github.com/conventional-changelog/standard-version?tab=readme-ov-file이 글은 AngularJS에서 사용되는 커밋 컨벤션이다.목표코드 ..

에러/기타2024. 10. 26. 20:06도메인과 모델

요구사항을 확인하고 설계를 하는 단계에서 MVC패턴을 적용 시키려고보니 "도메인과 모델은 무슨차이인가" 부터 시작해서 "MVC패턴은 Model, View, Controller인데 MVC패턴에서 Domain이 더해지면 MVC패턴이 아닌건가?" 그리고는 최종적으로 그럼 Entity는 무슨차이지? 라는 궁금증이 생겼었다.그래서 도메인, 모델 그리고 엔티티의 정확한 정의와 각 개념들은 어떤차이가 있는건지 그리고 MVC패턴과 연관관계를 알아봐야겠다라고 결심했다도메인도메인을 정의하기에 앞서 소프트웨어가 무엇인지에 대해 부터 정의하면 도메인을 이해하는게 편할 것이다.소프트웨어는 사람이 현실세계에 있는 문제를 해결하거나 보다 편리하게 사용하기위해서 만드는 프로그램이라고 생각한다예를 들어서 현시점에 음식점이나 카페에 가..

Git2024. 10. 24. 02:52[Git] push된 커밋을 되돌리고 Commit단위를 쪼개고 메시지 다시 작성하기

문제상황설명절차지향적으로 요구사항에 만족하는 구현을 한 뒤, 객체지향적으로 클래스와 기능을 나누려고 하였다.그러기위해 절차지향적인 구현을 V1이라는 브랜치를 파서 구현을 완료하고 main브랜치에 병합을 하고V2라는 브랜치를 다시 파서 V2브랜치에서 객체지향적으로 분리하려고 계획했었다.하지만 기능명세에 명세된 단위로 커밋을 남겼어야 했는데 V1에서 모든 기능의 구현을 완료한 뒤 "요구사항을 만족하는 구현 완료"라는 커밋메시지로 한 번에 커밋을 했고main브랜치로 V1을 병합까지 해버린 상태이다.문제를 해결하면서 고려해야할 사항은이미 병합된 상태로 push되어버린 main브랜치는 어떻게 해야하는가"요구사항을 만족하는 구현 완료"라고 커밋한 하나의 큰 커밋 단위를 어떻게 작게 나누어야하는가해결해보기이미 pus..

인텔리제이 빌드시 캐시손상문제 - 컴파일, 빌드에 관한 해결방법
에러/기타2024. 10. 15. 13:40인텔리제이 빌드시 캐시손상문제 - 컴파일, 빌드에 관한 해결방법

사용환경운영체제: MacOS Sonoma 14IDE: IntelliJ IDEA 2023.3.2 (Ultimate Edition)Java: Java 17 순수 Java를 사용하여 객체지향 프로그래밍을 연습해보려고 인텔리제이를 이용해서 Java프로젝트를 생성했는데 아래 사진과 같이 자바에 내장된 System라이브러리를 인식하지 못하는 오류가 발생하였다. System클래스를 들어가보니 "Library source does not match the bytecode for class System"라고 경고 문구가 나와있고, 클래스 파일은 정상적으로 빌드된걸 보아하니 컴파일 과정에서 문제가 있는듯 하였다. 생각해보니 나는 매일 IDE가 알아서 빌드해주는 프로젝트 위에서 코드를 구현하고 프로젝트를 만들어가고 있었다...

image