4차산업혁명의 일꾼/Spring 102

카프카, 레빗엠큐, 레디스 큐의 큰 차이점!

(3) 카프카, 레빗엠큐, 레디스 큐의 큰 차이점! 이벤트 브로커와 메시지 브로커에 대해 알아봅시다. - YouTube 이벤트 브로커와 메시지 브로커에 대해 알아봅시다. 메시지 브로커 - 데이터를 보내고, 처리하고 삭제한다. 이벤트 브로커 - 이벤트(메시지를 보관하고 인덱스로 개별액세스 관리) , 업무상 필요한 시간동안 메세지 보관(이벤트브로커 큐에 저장 - 메세지삭제x), 이벤트브로커는 메시지브로커로의 역할도 가능

Java/Spring 기반 서비스 개발과 MSA 구축

The RED : 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 by 이희창 이희창 약력 2020.08 ~ 현재 29CM / Director of Engineering Monolithic에서 Microservice Architecture 전환 과정 주도 (의사 결정, 도메인 도출 및 도메인간 계층 구조 정의, 기반 기술 정의, 기반 인프라 정의 및 구축) spring boot 기반의 주요 서비스 설계 및 구현 선물하기 서비스 런칭 (서비스 전체 구조를 설계함, 구현의 일부에 참여함, 개발 전체를 리딩하고 PO와 긴밀히 협업함) 29CM 대형 프로모션마다 이슈 없도록 대응 (빅토리아슈즈, 재지팩트와 같은 대량의 트래픽이 예상되는 프로모션마다 이슈 없도록 대응함, 이벤트 후 도출..

실용주의 프로그래머 [8장 46 챕터]

실용주의 프로그래머 [8장 46 챕터] 제1장: 실용주의의 철학 이 장에서는 실용주의 철학과 소프트웨어 개발에 대한 적용을 소개합니다. 실용적인 접근 방식에 필수적인 소프트웨어 엔트로피, 커뮤니케이션의 중요성, 지식 포트폴리오와 같은 개념에 대해 설명합니다. 2장: 실용주의적 접근 소프트웨어 개발에 대한 실용주의적 접근 방식은 단순성, 직교성 및 가역성의 중요성을 강조합니다. 이 장에서는 이러한 개념을 보다 자세히 살펴보고 실용주의적 접근 방식을 용이하게 하는 데 사용되는 추적 프로그램 및 프로토타입과 같은 도구를 소개합니다. 3장: 기본 도구 이 장에서는 일반 텍스트 편집, 셸 스크립팅 및 소스 코드 관리와 같은 소프트웨어 개발을 위한 기본 도구와 기술을 소개합니다. 또한 모든 소프트웨어 개발자에게 필..

클린아키텍쳐 - 소프트웨어의 구조와 설계의 원칙[7부 34장]

클린아키텍쳐 - 소프트웨어의 구조와 설계의 원칙[7부 34장] 1부 소개 1장: 디자인과 건축이란 무엇인가? 이 장에서는 소프트웨어 개발의 설계 및 아키텍처에 대한 개요를 제공합니다. 저자는 좋은 소프트웨어 디자인이 시간이 지남에 따라 변화하는 요구 사항에 적응할 수 있는 유지 관리 가능하고 확장 가능하며 유연한 응용 프로그램을 만드는 데 중요하다고 설명합니다. 그는 또한 소프트웨어 개발에서 아키텍처의 역할과 프레임워크, 라이브러리 및 아키텍처 패턴의 선택과 같은 애플리케이션의 상위 구조에 대한 결정을 내리는 방법에 대해 설명합니다. 2장: 두 가지 가치에 대한 이야기 이 장에서는 소프트웨어 개발의 두 가지 가치인 단순성과 유연성 사이의 긴장을 탐구합니다. 저자는 이 두 가지 가치가 서로 충돌하는 경우가..

네이버 쇼핑 최저가 리스트 만들기

네이버 쇼핑 최저가 저장 유투브 시연 https://www.youtube.com/watch?v=6OemCC6xQdw&t=54s 깃 소스 저장 https://github.com/MyoungSoo7/shopping_lowprice GitHub - MyoungSoo7/shopping_lowprice: 자바11, 스프링부트2.7, 그래들, h2, mysql, springsecurity, spring data jpa 자바11, 스프링부트2.7, 그래들, h2, mysql, springsecurity, spring data jpa - GitHub - MyoungSoo7/shopping_lowprice: 자바11, 스프링부트2.7, 그래들, h2, mysql, springsecurity, spring data jpa..

Effective Java 이펙티브 자바 정리[조슈아 블로치]

https://mangkyu.tistory.com/133 [개발서적] 이펙티브 자바(Effective Java) 핵심 요약 및 정리 이펙티브 자바를 읽으면서 제가 제대로 적용하지 못했던 부분 혹은 개념적으로 부족했던 부분을 정리하고, 앞으로의 개발에 적용해보고자 합니다. 1. 객체의 생성과 파괴 [ 1. 생성자 대신 정적 mangkyu.tistory.com Effective Java 이펙티브 자바 정리[조슈아 블로치] 1장 객체 생성과 파괴 item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 입력 매개 변수의 필요한 변환을 처리하는 것을 고려하십시오. item 2. 생성자의 매개변수가 많다면 빌더를 고려하라 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만드십시오. item 3. private 생성자나 ..

MyBatis로 게시판 만들기

스프링의 정석 : 남궁성과 끝까지 간다 MyBatis로 게시판 만들기 SqlSessionFactory( SqlSessionFactoryBean) 와 SqlSession( SqlSessionTemplate) SqlSessionFactory 와 SqlSession 설정 테이블 생성 -> mapper & dto 생성 -> dao인터페이스 -> dao인터페이스구현 &테스트 @Controller (과장) @Service (대리) @Repository(사원) Dto 처 소스파일 목록 화면정의서 샘플 공부하면 좋은 사이트 추천 https://www.w3schools.com/howto/ W3Schools How TO - Code snippets for HTML, CSS and JavaScript W3Schools of..

Spring DI와 AOP

스프링의 정석 : 남궁성과 끝까지 간다 Spring DI와 AOP 스프링 DI는 파사드 패턴(API 인터페이스), AOP는 프록시패턴(복제) 1. Spring DI 하기 코드를 보면 수동으로 car , engine 객체를 호출할수 있으나 하기와 같이 config.txt 파일을 만들어 바로 주입시킬 수 있다. car=com.fastcampus.ch3.diCopy2.Truck engine=com.fastcampus.ch3.diCopy2.Engine config.txt를 통해 DI를 쉽게 하는 모습과 car, engine 객체 수동으로 만들어 호출하는 모습이 코드 내에 다 보인다. package com.fastcampus.ch3.diCopy1; import java.io.FileReader; import ja..

인텔리제이, 스프링부트, 그래들, 코틀린과 함께 코틀린의 역사 고찰

코틀린은 젯브레인에서 2011년에 공개한 오픈 소스 프로그래밍언어다. 1995년에 발표한 자바보다 16년 늦게 태어났다. 그러나 코틀린은 내가 코딩을 시작한 해인.. 2017년에 구글이 안드로이드 공식 언어로 코틀린을 추천하였다고 하니 지금 모바일계는 코틀린이 점령하고 있다고 보인다. 코틀린은 예외처리도 강제하지 않고, 널에 안전하고, 모든 함수가 return 값을 가지는 등 차이도 있지만.. 무엇보다 자바와 비교하면 문법이 간결하다.. 파이썬처럼 참 직관적이니 차세대 언어에 가까워 보인다. 아래글은 아직 코틀린이 좋긴 하나, 자바보다 인지도 면에서 밀리고 빌드속도가 또한 느리다.(자바의 컴파일러의 역사는 20년을 넘는다.)메타는 그래들을 사용하는 인텔리제이의 안드로이드 스튜디오 IDE... 대신 자체적..

스프링과 스프링부트의 차이

[스프링] 스프링프레임워크는 자바 플랫폼을 위한 오픈 소스 어플리케이션으로서 간단히 스프링으로 불린다. 장점은 경량컨테이너, POJO, IOC, DI(객체간 결합 느슨), AOP(security, logging),PSA(portable service abstraction- db 연) 이다. [스프링부트] 스프링부트는 스프링이 기능이 많은 만큼 복잡하다. 이에 어려움을 느낀 사용자들을 위해 나온것이 바로 스프링 부트이다. 스프링부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 돕는다. 스프링부트 starter 디펜던시만 추가해주면 바로 API를 정의하고, 내장된 탐캣이나 제티로 웹어플리케이션 서버를 실행할 수 있다. 심지어 스프링 홈페이..

스프링 버전 변경 변천사 3.0에서 6.0까지

* 스프링은 경량, POJO, EJB, IOC, AOP, Transaction 관리 등으로 JavaEE 를 대체했다. * 스프링 컨테이너는 서블릿컨테이너와 다르게 WAS, 벤데에 종속적이지 않으면서 자유로운 확장이 가능하다 스프링 프레임워크는 간단한 컴포넌트 만으로도 Application 구성이 가능하다. xml 설정 파일 상의 선언적인 구성도 가능하다. 스프링 Integration : Container 구조 덕분에 다픈 프레임워크들과 결합이 쉽다. 특히 Hibernte 등과의 결합은 공식과도 같다. 스프링 3.0부터 java 5가 지원된다. a) 전체 프레임워크를 하나의 spring.jar 파일로 제공하던 부분을 여러개의 jar 파일로 나누어 제공한다. b) SPEL(Spring Expression L..

스프링이전의 Java EE에 대해 알아보자

Web Profile 8개 1. Servlet - 서버측 프로그램 혹은 그 사양을 말하며, 흔히 서블릿이라 불린다. 서블릿은 웹서버의 성능을 향상시키기 위해 사용되는 자바 클래스의 일종이다. 2. JSP Java를 이용한 서버 사이드 템플릿 엔진이다. jsp는 자바를 웹서버에서 쉽게 쓰기 윈한 기술이며 언어가 아니다. Java Server Pages의 약자. java의 점유율을 대폭 상승시킨 1등 공신이다. JSP는 주로 대규모 기업용 시스템 구축에 사용된다. J2EE는 JSP의 실행 뿐만 아니라 DB커션풀, 메시징 시스템, 로드밸런싱 등 화려한 기능들로 무장하고 있다. J2EE 웹서버계의 최고봉은 BEA의 WebLogic이었지만 오라클에 인수되었고, 한국에서는 공공기관 등에 자주 쓰이는 티맥스소프트의 ..

자바의 버전 변천사를 통한 자바 이해

버전을 설명하기 전에 자바의 JVM 간단 설명 [JVM 구성요소 : 클래스로더시스템 , 메모리, 실행엔진] 1. 클래스 로더는 말 그대로, 클래스를 읽어오는 시스템 구조인데, 로딩 -> 링크, 초기화순으로 진행된다. 2. 메모리는 스택, 레지스터, 힙, 메소드, 네이티브메서드스택으로 구성된다. (1) 힙은 인스턴스화된 모든 클래스 인스턴스와 배열을 저장, 객체를 저장하게 되는데, 모든 JVM 스레드에 공유되는 공유자원이다. (2) 메소드영역에서는 런타임 상수풀, 필드와 메소드 데이터 내용 ,즉 클래스 수준의 정보를 저장하게 된다. (논리적으로는 메소드는 힙의 일부다.) (3) PC 레지스터는 현재 실행중인 메서드가 네이티브가 아니면, 현재 실행중인 JVM명령어 위치에 저장되고, 네이티브이면 PC레지스터에..

자바개발자의 툴 이클립스에서 인텔리제이 비교

[ About 이클립스] 자바개발자로서 필자는 이클립스를 먼저 처음 접했다. 초기 당시에 필자는 툴이 여러개라는 지식도... 이 이클립스가 자바와 어떤 환경이 있었는지도 몰랐다. 그러나 이제 살펴보니 2001년에 IBM의 VisualAge용 소프트웨어 개발툴로서 만들다가, 제작 방향이 바뀌어 모두 공개한 자유소프트웨어가 되었다고 한다. 그리고 2004년에 이클립스 대단이 만들어져서 이클립스 IDE를 관리했다고 한다. [ 이클립스 장점] 이클립스의 장점은 그냥 당연하게 생각했지만.. 여러 프로젝트를 한 IDE에서 열 수 있다는것... 장점이라지만 이것도 필자의 경험으로는 양날의 검이다. C#, C++까지 모두 한 UI화면에서 보면서 유지보수 할 수 있고, 그냥 같은 언어 Java라 하더라도 여러개의 프로젝..

스프링의 정석 : 남궁성과 끝까지 간다 1 : 스프링MVC , SpringMVC

스프링의 정석 : 남궁성과 끝까지 간다 스프링MVC 스프링MVC Spring MVC 1. 들어가며 [Servlet -> JSP -> Spring] -> SpringBoot Spring : STS3 , 인텔리제이(유료에서 지원 -> 웹,db지원) SpringBoot : STS4, 인텔리제이(무료지원) 2. Http의 요청과 응답 http1.1 : Connection 하나당 하나의 요청 http2 : Connection 하나당 여러개 요청 가능, 응답은 Stream으로 주고 받음 3. web.xml 과 server.xml web.xml => 애너테이션 server.xml => 포트, DB, 웹리소스참조경로, 이벤트리스너 설정 4. GET/ POST 요청 : GET은 공유에 유리(소용량) , POST는 보안에..

Interpreter Pattern - 디자인패턴(인터프리터 패턴)

박은종의 객체지향 설계를 위한 디자인패턴 with 자바 Interpreter Pattern 문법 규칙을 클래스로 표현 간단한 프로그램을 해석하기 위한 패턴 간단한 언어에 대한 해석기 패턴 각 문법에 대한 해석을 클래스로 표현 미니언어나 게임에서 사용하는 간단한 언어에 대한 문법 해석기 문법의 변경이나 확장이 쉽고 문법의 구현이 쉽다. 복잡한 문법은 사용할 수 없다. package com.backend.bakckend.designpattern.interpreter; import java.io.BufferedReader; import java.io.FileReader; import java.util.StringTokenizer; import java.util.Vector; abstract class Node..

디자인패턴 - Command Pattern

박은종의 객체지향 설계를 위한 디자인패턴 with 자바 Command Pattern 명령을 클래스로 만듬(메뉴, 프로토콜) 요청을 객체로 만들어 전달한다. 요청을 기록으로 남겨 취소도 가능하도록 한다. 클라이언트 서버간의 프로토콜로 사용할 수 있다. 명령 자체를 객체화 하여 여러 다른 객체에 명령이 전달되거나 명령이 조합될 수도 있다. 새로운 프로토콜이 추가되기 쉽다. 부가적인 정보가 많은 경우는 비효율적일 수 있다.

디자인 패턴 with 자바 - 낭비를 없애기(Flyweight, Proxy)

박은종의 객체지향 설계를 위한 디자인패턴 with 자바 낭비를 없애기(Flyweight, Proxy) 공유를 통하여 인스턴스의 수를 절약한다. 인스턴스마다의 특성이 거의 없는 객체에 사용하는 것이 효율적이다. 부가적인 정보가 많은 경우는 비효율적일 수 있다. package com.backend.bakckend.designpattern.waste; import java.util.Hashtable; class BigChar{ private char charname; private String fontdata; public BigChar(char charname) { this.charname = charname; try { this.fontdata = readFontData(charname); } catch ..

스프링 부트의 정석 : 이번에도 남궁성과 끝까지 간다 1

스프링 부트의 정석 : 이번에도 남궁성과 끝까지 간다 1. Chapter 1. 스프링부트 준비하기 스프링 부트의 장점 1. 자동설정 2. 의존성 관리 * 2022년 기준 스프링 6.0, 스프링부트 3.0 까지 나옴 * 스프링 툴(sts4 다운로드) https://spring.io/tools Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io 메이븐은 의존성관리, 자동빌드, 패키징을 관리 해준다. (그래들) 스프링부트 프로젝트 :(spring initilizer) - 2.7.9 버전 : Spring Boot DevTools, ..