이것 올릴까 말까 고민했는데 그냥 자바 진영은 이런 식으로 한다 참고 삼으시면 좋을것 같아 한번
올려봅니다. 저걸 참고해서 .Net으로 바꿔본다 하는것도 좋을것 같습니다.
JAVA
JVM
간략 설명 : [java] JVM 구조 : 네이버 블로그
JDK, JRE, JVM 관계 : 나만의공간。 : 네이버 블로그
GC(garbage collection) : 나만의공간。 : 네이버 블로그
좀 더 궁굼하면 : 벽보고 욕이라도 하자: 오랜만에 Garbage Collection 정리
JAVA 언어 강좌 링크(생활코딩) : Java - 생활코딩
자바 문법 기초 소스 코드 및 연습 문제 : GitHub - matyb/java-koans: A framework and lessons to learn java syntax and idioms in a logical sequence.
JAVA7 변경 요약 : Java 7의 새로운 특징 : Java7에서의 중요한 변화들과 업데이트된 항목에 대한 조사. - 한빛출판네트워크
JAVA8 변경 요약 : Java 8 살펴보기 | Devlog in the SKY
Spring 5 & Spring boot 2의 권장 버전은 JAVA8
JAVA9 변경 요약
https://www.popit.kr/나만-모르고-있던-java9-빠르게-보기/
JAVA10 변경 요약 : Java10 신규 기능(특징) 정리
JAVA11,12 릴리즈됨… 곧 13 릴리즈 예정…
(옵션)Java6 이후 챙겨봐야하는것들
스트림 API
람다 표현식
Spring Framework & 주로 함께 사용하는 Framework & etc.
Spring Framework 개념 강좌 링크
스프링 부트 공식 레퍼런스 : 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 따라하기 링크 : Spring 강좌 1강 - 개발환경 구성
위 따라하기 중 주의사항 : 라이선스 문제로 인하여 Oracle JDK를 설치하면 안됨(오라클 자바SE 정책 변경, IT 업계 대응 방안은? (1) < 정책·산업 < 뉴스 < 기사본문 - 아이티데일리)
Open JDK로 설치
공식 사이트 : https://openjdk.java.net/
설치 가이드 : OpenJDK: Download and install
윈도우즈 설치 파일 : GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project
Mac : 오픈 JDK MAC 에 설치하기
Spring Boot Framework
Spring Boot란 : 스프링부트 소개 · GitHub
Spring Boot 2.0 변경 요약 : Spring Boot 2.0 수박 겉 핥기. 이번 포스팅은 FunFunStudy의 4번째 뻔뻔한 발표를 위해서… | by 디지털 세상을 만드는 아날로거 | Medium
백기선의 Spring Boot 강좌 노트 : 백기선의 스프링 부트
백기선의 Spring Boot 유료 강좌 링크(비싸요) : 스프링 부트 개념과 활용 - 인프런 | 강의
백기선의 Spring Boot 너튜브 강좌 : 스프링 부트 - YouTube
Spring Boot + Kotlin 따라하기 : Spring Boot와 Kotlin으로 웹 애플리케이션 구축하기 | Developer's Record
참조할만한 소스 코드들
ORM
ORM이란 : [DB] ORM이란 - Heee's Development Blog
JPA
JPA란 : [JPA] JPA란 무엇인가?
Spring Data JPA : https://spring.io/projects/spring-data-jpa
Spring Boot에서 Spring Data JPA 사용 예제 : [SpringBoot] JPA 설정 및 테스트
Hibernate
소개 : Your relational data. Objectively. - Hibernate ORM
Spring Boot + Hibernate : 스프링 부트 Auto-configuration과 JPA(하이버네이트) SQL문 로깅 | by Yoo Young-mo | Medium
SQLMapper
Mybatis
Mybatis 소개 및 사용법 : MyBatis – 마이바티스 3 | 소개
구 iBatis와 Mybatis의 차이점 : mybatis Framework (마이바티스 개념, ibatis와 차이, 구조, api, SqlSession)
Spring Boot + Mybatis : spring-boot에서 mybatis로 mysql 연동하기 - 👨💻꿈꾸는 태태태의 공간
Templet Engine
Templet Engine이란 : [Template Engine] 템플릿 엔진(Template Engine)이란 - Heee's Development Blog
Spring에서 view templet으로 사용하는 것들 : FreeMarker, Groovy, Thymeleaf, Velocity, JSP
Freemarker : https://freemarker.apache.org/
Freemarker 기본 사용법 : freemarker 설명 및 기본 예제 - [종료]구루비 Dev 스터디 - 개발자, DBA가 함께 만들어가는 구루비 지식창고! , Template Language Reference - Apache FreeMarker Manual
Spring Boot + Freemarker 사용 : Spring Boot, FreeMarker 템플릿 뷰 적용하기
Velocity : https://velocity.apache.org/
Velocity 기본 사용법 : Velocity 사용하기 :: 소림사의 홍반장! , Apache Velocity Engine - User Guide
Spring Boot + Velocity 사용 : spring boot-4(Velocity 설정과 사용)
STS(Spring Tool Suite) 다운로드 : https://spring.io/tools
배포하기
빌드 도구
빌드 도구 설명 : https://jj-one-a-week.blogspot.com/2017/05/ant-maven-gradle.html
maven vs gradle : Maven vs Gradle
maven 빌드 설정파일 설명 : 메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? (pom.xml 분석하며 가볍게 정리하는 빌드 툴, Maven)
gradle 빌드 설정파일 설명 : https://effectivesquid.tistory.com/entry/Gradle-빌드시스템-기초
웹서버
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
기타
오픈소스 : 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
설치 : 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/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
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/애플리케이션_성능_관리
상용 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-설치및-사용법1 , 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.
인텔리J에서 롬복 적용 방법
https://chan7ee.tistory.com/entry/intellij-lombok-적용
자바 12 or 11을 설치하고 나서 스프링 부트 프로젝트를 시작할때 Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 에러가 발생하면