일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 세션기반 인증
- 작업명중복
- RESTfull API
- 스프링
- 스프링부트 구조
- JPA
- 동기
- spring
- formmatted
- 로그인/로그아웃
- ./gr
- Java
- 로그인 인증 흐름
- 비동기
- 토큰기반 인증
- JWT
- 어노테이션
- MSA
- ORM
- 프레젠테이션 계층
- 스프링부트
- 퍼시스턴스 계층
- http
- java I/O
- 스프링 부트 테스트
- ./gradlew docker
- 비즈니스 계층
- IPC
- 스프링부트 계층구조
- @temproal
- Today
- Total
목록전체 글 (74)
[DEV] J-Jay
스프링의 등장 엔터프라이즈 애플리케이션이라는 용어가 있다. 웹 개발이 처음인 사람에게는 생소한 용어일텐데, 엔터프라이즈 애플리케이션은 대규모의 복잡한 데이터를 관리하는 애플리케이션을 말한다. 소프트웨어 분야가 발전하며 엔터프라이즈 애플리케이션은 점점 복잡해졌다. 예시로, 은행 시스템을 생각해보면 몇 천만의 사람이 한꺼번에 잔고 조회를 하고, 입금이나 출금 요청을 하고, 새로운 통장을 개설하기도 한다. 이렇듯 엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안전성, 보안이 매우 중요하다. 그런데 이런 것들을 신경쓰면서 비즈니스 로직까지 개발하기에는 매우 어렵다. 누군가 엔터프라이즈 애플리케이션ㅇ르 위한 개발 환경을 제공해서 기능 개발에만 집중할 수 있다면 얼마나 좋을까?..
Library(라이브러리란)? 라이브러리는 애플리케이션 개발에 필요한 기능인 클래스, 함 수 등을 모아놓은 코드의 모음을 말한다. 프로그래밍 세계에서의 라이브러리는 도서관이라는 의미보다는 책들의 모음이라고 이해하는 것이 더 좋다. 개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일정의 도구 역할을 하는 것이다. 따라서 개발자는 복잡한 코드를 작성하지 않아도 되므로 원하는 기능을 더 빠르게 개발할 수 있고, 라이브러리는 독립적으로 아리브러리 끼리 영향을 크게 주지 않는다. Framework(프레임워크란?) 프레임워크는 소프트웨어 개발으 수월하게 하기 위한 소프트웨어 개발 환경이다. 프레임워크는 틀(Frame)과 일(Work)의 합성어로 일하기 위한 ..
IP 와 Port란? IP는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다. IP를 알면 서버를 찾을 수 있지만 서버를 이용하려면 IP 뿐만 아니라 Port 까지 알아야 한다. IP가 서버를 찾기 위한 번호라면 Port는 그 서버에서 운영되고 있는 서비스를 구분하기 위한 번호입니다. 쉽게 말해서 IP가 백화점이라면 포트는 각자 다른 물건을 살 수 있는 매장이라고 상상하면 된다. 예를 들어 우리가 흔히 사용하는 웹 브라우저에 주소에는 사실 IP와 Port가 들어 있다. www.naver.com 과 같은 주소는 IP를 쉽게 알아보기 위해 이름표(도메인)을 붙인 것이고 그 앞에 있는 https://라는 것은 서버의 443 포트를 사용하기 위한 입력이다. 그렇다면 우리가 Local에서 ..
데이터 베이스란? 데이터 베이스는 여러 사람이 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소이다. 흔히 데이터베이스를 말할 때 MySQL, Oracle, PostgreSQL등을 이야기 한다. 사실 엄밀히 말해 이것들은 데이터베이스를 관리하는 시스템 이름(DBMS) 이며 데이터 베이스가 아니다. 다만 데이터 베이스와 데이터베이스 관리 시스템은 한 쌍으로 움직이므로 둘을 하나처럼 언급할 뿐이다. RDB란? 데이터베이스는 여러 가지로 구분할 수 있다 (RDB, NoSQL, NewSQL 등) 그중 가장 많이 사용하는 데이터베이스느는 RDB이다. RDB는 Relational Database의 약자로 관계형 데이터베이스라는 뜻 RDB가 아닌 데이터베이스를 NoSql 또는 NewSQ..
인터넷 서비스는 보통 서버와 클라이언트가 관계를 맺는다. 그래서 이 둘의 관계를 잘 이해해야 한다 보통 클라이언트와 서버의 관계는 아래와 같이 표현한다. 클라이언트란? 클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말한다. 우리가 사용하는 프로그램인 웹 브라우저가 바로 대표적인 클라이언트 중 하나이다. 우리는 웹 브라우저로 무엇을 할까? 주소를 입력하고, 화면을 확인한다. 이떄 주소를 입력한 뒤 [Enter] 를 눌러 정보를 요청 하는 행위를 '서버(Server)에 요청(Request) 한다.' 라고 한다. 그러면 서버는 그 주소에 맞는 화면으로 응답(Response) 한다. 서버란? 서버는 클라이언트의 단짝이다. 서버는 클라이언틔 요청을 받아 처리하는 주체이다. 클라이언트가 데이터를 요청했다면 데..
build.gradle 설정하기 plugins { // 1 id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' } // 2 group = 'me.dev_juny' //지정한 그룹 이름 version = '1.0' sourceCompatibility = '17' repositories { // 3 mavenCentral() } dependencies { // 4 implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spri..
빌드 시스템(Build system)에 있는 Gradle과 Maven은 소스 코드를 이용해서 실행 가능한 애플리케이션을 생성하는 과정을 자동화 하는 프로그램을 말한다. 이 과정에는 의존성 내려받기, 코드 패키징, 컴파일, 테스트 실행 등이 포함되어 있다. 예전에는 Maven을 많이 사용했지만 요즘은 Gradle을 많이 사용하는 추세이다. Gradle은 다음과 같은 특징이 있다. Maven에 비해 가독성이 좋고 설정이 간단하다. Java, Kotlin, Groovy등 다양한 언어를 지원하며, 원하는 대로 빌드 스크립트를 작성 할 수 있다. Build와 Test 속도가 Maven에 비해 더 빠르다
첫번째 문제 일시: 2023.08.03 16:30 PUSH 중복 발송 (동일한 내용) 이전까지 잘 동작하던 Quartz 로 만든 스케줄러가 이상하게 동작했다. 추측 스케줄러의 로그를 분석한 결과 배치의 작업명을 변경해서 생긴 문제였다. ex) 작업명: 배치1 → 배치2 변경 동일한 시간에 이전 작업명 배치1과 배치2가 동시에 실행이 된거로 추측된다. 해결 및 보류 작업명을 배치2 → 배치1로 원복했다. 원복하고 난 후 딱히 문제가 발생하지 않아 보류... 또 다시 문제 발생... 다음날 09:00에 동일한 문제가 또 발생 했다. (PUSH 중복 발송) 왜지? 작업명은 원복했는데....? 로그를 보니 또 동일한 시간대에 어제와 마찬가지로 작업명이 배치1(기존) 과 배치2(변경) 가 동시에 실행 됐다. 분명..
Scheduler 애플리케이션 서버 내에서 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 기능 Quart Scheduler 오프 소스 (http://quartz-scheduler.org/) JAVA 기반 스케줄러 주요 요소 Scheduler : Quartz 실행 환경을 관리하는 핵심 개체 Job : 사용자가 수행할 작업을 정의하는 인터페이스로서 Trigger 개체를 이용하여 스케줄 가능 JobDetail : 작업명과 작업그룹과 같은 수행할 Job에 대한 상세 정보를 정의하는 개체 Trigger : 정의한 Job 개체의 실행 스케줄을 정의하는 개체 Trigger SimpleTrigger : 간단하게 사용 가능 (Interval, Delay, Repeat Time 등 설정) CronTrigger ..
Restful API Design RESTFUL API: 표현 상태 전송 (REST)의 원칙을 준수하는 API(Application Programming Interface) 프로세스 REST는 웹 서비스를 만들 때 사용할 수있는 제약 세트를 정의하는 소프트웨어 아키텍처 스타일 제약 조건 클라이언트 서버 아키텍처 무국적 아키텍처, 캐시 가능성 및 균일 한 인터페이스 사용 편안한 API 디자인은 이러한 제약을 따라 API가 확장 가능하고 유연하며 관리가 편함 (리소스 설계, HTTP 방법 정의, 하이퍼 미디어 링크를 사용 포함) Restful API Design은 다른 시스템 및 서비스와 통신 할 수있는 최신 웹 애플리케이션을 구축하는 데 중요한 사항