오픈 소스 플랫폼을 위해 공부할것들

닷넷디벨·2023년 2월 9일
0

JAVA

JVM

간략 설명 : https://m.blog.naver.com/PostView.nhn?blogId=writer0713&logNo=221137837754&proxyReferer=https%3A%2F%2Fwww.google.com%2F

JDK, JRE, JVM 관계 : https://blog.naver.com/writer0713/221137806267

GC(garbage collection) : https://blog.naver.com/writer0713/221137865138

좀 더 궁굼하면 : https://yckwon2nd.blogspot.com/2014/04/garbage-collection.html

JAVA 언어 강좌 링크(생활코딩) : https://opentutorials.org/course/1223

자바 문법 기초 소스 코드 및 연습 문제 : https://github.com/matyb/java-koans

JAVA7 변경 요약 : http://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS9451408435

JAVA8 변경 요약 : https://skyoo2003.github.io/post/2016/10/25/introduction-to-java8

Spring 5 & Spring boot 2의 권장 버전은 JAVA8

JAVA9 변경 요약

https://medium.com/@goinhacker/java-9%EC%9D%98-%EB%B3%80%ED%99%94%EC%99%80-%ED%8A%B9%EC%A7%95-%EB%8C%80%EC%B6%A9-%EC%A0%95%EB%A6%AC-fca77cee88f2

https://www.popit.kr/%EB%82%98%EB%A7%8C-%EB%AA%A8%EB%A5%B4%EA%B3%A0-%EC%9E%88%EB%8D%98-java9-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EB%B3%B4%EA%B8%B0/

JAVA10 변경 요약 : https://itstory.tk/entry/Java-10-%EC%8B%A0%EA%B7%9C-%EA%B8%B0%EB%8A%A5%ED%8A%B9%EC%A7%95-%EC%A0%95%EB%A6%AC

JAVA11,12 릴리즈됨... 곧 13 릴리즈 예정...

(옵션)Java6 이후 챙겨봐야하는것들

스트림 API

람다 표현식

Spring Framework & 주로 함께 사용하는 Framework & etc.

Spring Framework 개념 강좌 링크

https://ooz.co.kr/170

스프링 부트 공식 레퍼런스 : https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/

공식 가이드 : https://spring.io/guides

공식 스프링 전체 프로젝트 : https://spring.io/projects

Spring Legacy Framework

hello world 따라하기 링크 : https://its-easy.tistory.com/7

위 따라하기 중 주의사항 : 라이선스 문제로 인하여 Oracle JDK를 설치하면 안됨(http://www.itdaily.kr/news/articleView.html?idxno=92150)

Open JDK로 설치

공식 사이트 : https://openjdk.java.net/

설치 가이드 : https://openjdk.java.net/install/

윈도우즈 설치 파일 : https://github.com/ojdkbuild/ojdkbuild

Mac : http://blog.naver.com/PostView.nhn?blogId=sthwin&logNo=221431479348&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=true&from=search

Spring Boot Framework

Spring Boot란 : https://gist.github.com/ihoneymon/8a905e1dd8393b6b9298

Spring Boot 2.0 변경 요약 : https://medium.com/@goinhacker/spring-boot-2-0-%EC%88%98%EB%B0%95-%EA%B2%89-%ED%95%A5%EA%B8%B0-9bc1f3800fd4

백기선의 Spring Boot 강좌 노트 : https://www.slideshare.net/whiteship/ss-108533045

백기선의 Spring Boot 유료 강좌 링크(비싸요) : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

백기선의 Spring Boot 너튜브 강좌 : https://www.youtube.com/playlist?list=PLfI752FpVCS8tDT1QEYwcXmkKDz-_6nm3

Spring Boot + Kotlin 따라하기 : https://infoscis.github.io/2018/08/30/spring-boot-kotlin/

참조할만한 소스 코드들

https://github.com/gothinkster/spring-boot-realworld-example-app

https://github.com/in28minutes/spring-boot-examples

ORM

ORM이란 : https://gmlwjd9405.github.io/2019/02/01/orm.html

JPA

JPA란 : https://blog.woniper.net/255

Spring Data JPA : https://spring.io/projects/spring-data-jpa

Spring Boot에서 Spring Data JPA 사용 예제 : https://lemontia.tistory.com/597

Hibernate

소개 : http://hibernate.org/orm/

Spring Boot + Hibernate : https://medium.com/@SlackBeck/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-auto-configuration%EA%B3%BC-jpa-%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B8-sql%EB%AC%B8-%EB%A1%9C%EA%B9%85-424de95ed171

SQLMapper

Mybatis

Mybatis 소개 및 사용법 : http://www.mybatis.org/mybatis-3/ko/index.html

구 iBatis와 Mybatis의 차이점 : https://sjh836.tistory.com/127

Spring Boot + Mybatis : https://taetaetae.github.io/2019/04/21/spring-boot-mybatis-mysql-xml/

Templet Engine

Templet Engine이란 : https://gmlwjd9405.github.io/2018/12/21/template-engine.html

Spring에서 view templet으로 사용하는 것들 : FreeMarker, Groovy, Thymeleaf, Velocity, JSP

Freemarker : https://freemarker.apache.org/

Freemarker 기본 사용법 : http://wiki.gurubee.net/pages/viewpage.action?pageId=1343682 , https://freemarker.apache.org/docs/ref.html

Spring Boot + Freemarker 사용 : https://jsonobject.tistory.com/424

Velocity : https://velocity.apache.org/

Velocity 기본 사용법 : https://androphil.tistory.com/525 , https://velocity.apache.org/engine/1.7/user-guide.html#variables

Spring Boot + Velocity 사용 : https://blog.woniper.net/233

STS(Spring Tool Suite) 다운로드 : https://spring.io/tools

배포하기

https://heowc.tistory.com/38

https://jojoldu.tistory.com/263

빌드 도구

빌드 도구 설명 : https://jj-one-a-week.blogspot.com/2017/05/ant-maven-gradle.html

maven vs gradle : https://bkim.tistory.com/13

maven 빌드 설정파일 설명 : https://jeong-pro.tistory.com/168

gradle 빌드 설정파일 설명 : https://effectivesquid.tistory.com/entry/Gradle-%EB%B9%8C%EB%93%9C%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B8%B0%EC%B4%88

웹서버

Apache : https://httpd.apache.org/docs/2.4/ko/

NginX : https://nginx.org/en/

WAS

Tomcat : http://tomcat.apache.org/

톰캣 성능 Question?

https://cwiki.apache.org/confluence/display/TOMCAT/Performance+and+Monitoring

http://toby.epril.com/?p=1125

기타

오픈소스 : glassfish, JBoss 등

상용 : WebSphere, WEBLogic, JEUS 등

DB, NoSql 등

DB 종류 별 랭킹 : https://db-engines.com/en/ranking

redis : https://redis.io/

couchbase : https://www.couchbase.com/

다운로드 : https://www.couchbase.com/downloads

System Resource Requirements : https://docs.couchbase.com/server/6.0/install/pre-install.html

설치 가이드 : https://docs.couchbase.com/server/6.0/install/install-linux.html

infinispan : https://infinispan.org/

mongodb : https://www.mongodb.com/

cassandra : http://cassandra.apache.org/

mariadb : https://mariadb.org/

mariadb storage engine들 : https://mariadb.com/kb/en/library/storage-engines/

mariadb columnstore

개념 : http://blog.naver.com/PostView.nhn?blogId=hanajava&logNo=220969987180&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView

설치 : https://knoow.tistory.com/180

리눅스

Linux 강좌 링크 : https://opentutorials.org/course/2598

Linux 설치

CentOS7 설치 가이드 : https://jootc.com/p/201806031103

로컬 PC Windows에 Linux를 설치하려면 먼저가상 머신 설치(Mac은 다들 잘 아시니...)

Hyper-V : Windows 10 Pro, 8 Pro인 경우 Hyper-V 설치 사용 가능

Hyper-V 소개 : https://docs.microsoft.com/ko-kr/virtualization/hyper-v-on-windows/about/#operating-systems-you-can-run-in-a-virtual-machine

Hyper-V 설치 : https://docs.microsoft.com/ko-kr/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

Vmware : Vmware Workstation Player는 설치하면 안됨. 무료 버전이지만 상업조직에서는 사용 불가. 집 PC에는 상관 없음

VirtualBox : 가장 많이 사용하지만 라이선스 정책이 좀 애매함

VirtualBox 라이선스 관련 링크

https://www.oss.kr/oss_license_qna/show/dab50438-d8a4-4260-a3c9-a38c61edcf56

https://m.blog.naver.com/PostView.nhn?blogId=yexx&logNo=220602850523&proxyReferer=https%3A%2F%2Fwww.google.com%2F

Container

Container 개념 : https://captcha.tistory.com/46

Docker : https://captcha.tistory.com/45?category=830258

Kubernetes : https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

APM : Application Performance Management

APM이란 : https://ko.wikipedia.org/wiki/%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98_%EC%84%B1%EB%8A%A5_%EA%B4%80%EB%A6%AC

상용 APM : 한국에서는 dynatrace, New Relic, 제니퍼 등을 주로 사용함. 매우 비싼 가격...

오픈소스 APM

Pinpoint(NHN 공개 오픈소스)

소개, 설치, 사용 가이드 : https://docs.ncloud.com/ko/pinpoint/pinpoint-1-2.html

Scouter(LG CNS 공개 오픈소스, 전 제니퍼소프트CTO가 직접 개발)

소개, 설치, 사용 가이드 : https://github.com/scouter-project/scouter/blob/master/README_kr.md

기타 : https://www.joecolantonio.com/apm/

DB 모니터링 솔루션

상용 : Sherpa(http://www.sherpasoft.com/subPage/product/product_sherpasqlServer.html), MaxGauge(https://m.ex-em.com/product/maxgauge) 등... 비싼 가격...

트라이얼 or Free : https://www.comparitech.com/net-admin/best-database-monitoring-tools/

JAVA NIO Server Framework, 초고성능 REST API 혹은 TCP서버 등을 개발할때 주로 활용

Netty : https://netty.io/

Grizzly : https://javaee.github.io/grizzly/

Thrift : https://thrift.apache.org/

Thrift는 바이너리 직렬화 프로토콜 용도로만도 사용됨

(곁가지)주로 사용되는 바이너리 직렬화 프로토콜 : Thrift, Protocol Buffer, Avro 등

(곁가지)바이너리 직렬화 프로토콜 참고 자료

성능 비교 : https://labs.criteo.com/2017/05/serialization/

ttps://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%8A%A4%EB%A6%AC%ED%94%84%ED%8A%B8

ttps://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%95%84%EB%B8%8C%EB%A1%9C

ttps://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C_%EB%B2%84%ED%8D%BC

성능테스트

읽어보면 좋은 글 : http://woowabros.github.io/experience/2018/05/08/billing-performance_test_experience.html

오픈소스 성능테스트 툴

비교 : https://atyou73.github.io/itrepo/post/compare-loadtest-tool-1/

Jmeter : https://jmeter.apache.org/

사용법(매우 쉬움) : https://qjadud22.tistory.com/35 , https://jmeter.apache.org/usermanual/get-started.html

특이사항1 : 대량 부하 투입을 위한 [Controller-멀티 부하Agent] 구성이 가능하나 고사양의 머신 필요함. 단독 부하기로 사용시에는 PC에서도 무리 없음.

특이사항2 : GUI툴 기능으로 간단한 시나리오는 쉽게 구현되나 시나리오의 복잡도가 높을 경우 JAVA로 일부 프로그래밍 필요

nGrinder : https://github.com/naver/ngrinder

설치 : https://kamang-it.tistory.com/entry/nGrindernGrinder-%EC%84%A4%EC%B9%98%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%951 , https://github.com/naver/ngrinder/wiki/Installation-Guide

사용법 : https://github.com/naver/ngrinder/wiki/User-Guide

시나리오 스크립트 : Groovy 혹은 Jython으로 작성(https://github.com/naver/ngrinder/wiki/Scripting-Guide)

성능테스트 진행 시, 주의사항

타사 웹서비스를 대상으로 부하를 발생시키면 안됨(공격으로 분석되어 IP가 차단될 수 있고, 법적 책임이 발생할 수도 있음)

우리 웹서비스 실서버를 대상으로 부하를 발생시키면 안됨

웹서버 다운이나 사이트 속도 다운을 유발할 수 있음. 경우에 따라서는 DB서버에는 심각한 영향 발생 가능

우리 보안 장비의 룰에 의해서 IP가 차단될 수 있음

혹시 실서버 대상으로 성능테스트를 진행할 경우 어플리케이션, 서버, 네트워크, DB의 실시간 모니터링 하에서 테스트를 시작하고, 이상이 감지될 경우 즉시 중지해야함

혹시 실서버 대상으로 성능테스트를 진행할 경우 웹보안 장비에 부하기 머신 IP를 예외 허용 등록해야함

부하 쓰레드 조절 컨트롤러를 사용하여 낮은 수의 쓰레드로 테스트를 시작, 일정 시간씩 텀을 주고 순차적으로 목표 부하 쓰레드까지 올라가는 형태로 진행해야함

TPS(transaction per second) 개념 설명 : https://www.whatap.io/blog/14/

참고 : TPS를 throughput per second으로 부르기도 함.

참고 : 웹서비스 성능테스트 엔지니어들은 일반적으로 웹서비스 페이지 1개를 브라우저에 로딩하기 위해 포함되는 Request(ex : url call + ajax call + javascript call + css call + image call)들의 집합을 Transaction이라 칭함.

트러블 슈팅

인텔리J에서 Could not autowire. No beens of 'xxx' type found.

https://stackoverflow.com/questions/26889970/intellij-incorrectly-saying-no-beans-of-type-found-for-autowired-repository

인텔리J에서 롬복 적용 방법

https://chan7ee.tistory.com/entry/intellij-lombok-적용

자바 12 or 11을 설치하고 나서 스프링 부트 프로젝트를 시작할때 Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 에러가 발생하면

https://java.ihoney.pe.kr/521

profile
hardcore developer

0개의 댓글