λ‘μ»¬μ΄ μλ ν μ€νΈ μλ²λ΄ tomcat8 μ€μΉνλ λ°©λ²μ λν΄ μμλ³΄κ² μ΅λλ€. μλ²λ CentOS κΈ°μ€μ λλ€. μμ£Ό κΈ°μ΄μ μΈ λ¦¬λ μ€ λͺ λ Ήμ΄λ μλ€κ³ κ°μ νμ¬ μ§νν©λλ€. [STEP1] Apach Tomcat μ¬μ΄νΈ μ μ Apach Tomcat μ λ€μ΄κ°λλ€. μ λ 8λ²μ μ μ¬μ©ν κ²μ΄κΈ°μ Tomcat8μ λλ¬μ€λλ€. μ€λ₯Έμͺ½ λ²νΌμ λλ¬ "λ§ν¬ μ£Όμ 볡μ¬"λ₯Ό λλ¬μ€λλ€. [STEP2] wget μ€μΉνκΈ° μλ²μ μ μ ν μλ λͺ λ Ήμ΄λ₯Ό μ λ ₯ν΄μ€λλ€. yum install -y wget * μ°Έκ³ : yumμ λ λν κ³μ΄μμ μ¬μ©νλ ν¨ν€μ§ 맀λμ , wgetλ μΉ μλ²λ‘λΆν° 컨ν μΈ λ₯Ό κ°μ Έμ€λ νλ‘κ·Έλ¨ [STEP3] μλ§μ μμΉμ ν°μΊ£ μ€μΉ λ° μμΆ νκΈ° μ λ /var/lib/tomcat-feadmin μμΉμ ν°μΊ£..
μ΄ κΈμ Song Seunggeun λμ κΈμ λ³΄κ³ μμ±ν κΈμ΄λ©°, νλ½μ λ°μμ΅λλ€. λ Όλμ μ¬μ§κ° μμ μ μμ§λ§, μλ°μ€ν¬λ¦½νΈλ 2021λ νμ¬ μννΈμ¨μ΄ μ κ³μμ κ°μ₯ μ λͺ ν μΈμ΄λΌκ³ ν μ μμ΅λλ€. 2020λ Githubμ λΆμμ λ°λ₯΄λ©΄ μλ°μ€ν¬λ¦½νΈλ 2014λ μ΄λλ‘ νμ μν₯λ ₯ μλ μΈμ΄μκ³ , μλ°μ€ν¬λ¦½νΈμ μΉμ²μ΄λΌκ³ ν μ μλ νμ μ€ν¬λ¦½νΈ λν κ·Έ μμκ° 4μμ λ¬ν©λλ€. μλ°μ€ν¬λ¦½νΈλ μ΄λ»κ² μ΄λ κ² μ λͺ ν΄μ§ μ μμμκΉμ? νμ΄μ¬, μλ°, C λ±μ μ ν΅μ κ°μλ€, κ·Έλ¦¬κ³ Golang, Rust, Swift, Dart λ±μ μ ν₯ κ°μλ€κ³Όμ κ²½μμμ μλ°μ€ν¬λ¦½νΈλ μ΄λ»κ² μ°μλ₯Ό μ ν μ μμμκΉμ? μ΄λ² κΈμμλ ν΄λ μ΄νΌ ν¬λ¦¬μ€ν μ¨ κ΅μμ νκ΄΄μ νμ μ΄λ‘ μ μ΄μ©ν΄μ μλ°μ€ν¬λ¦½νΈκ° μ±μ₯ν ..
λ‘컬 μλ²κ° μλ ν μ€νΈ μλ²μμ μ ν¨μ€λ₯Ό μ΄μ©νμ¬ CI/CDλ₯Ό ν΄λ³΄κ² μ΅λλ€. μλ²λ CentOS7 κΈ°μ€μ λλ€. λ€μκ³Ό κ°μ μμλ‘ μ§νν©λλ€. KTCloudλ₯Ό μ΄μ©νμ¬ μλ² κ΅¬μΆ(μλ΅) ν μ€νΈ μλ² λ΄ ν°μΊ£(port80), JDK(1.8.x) μ€μΉ ν μ€νΈ μ ν¨μ€ μλ² κ΅¬μΆ ν μ€νΈ μλ² λ΄ μ ν¨μ€λ₯Ό ν΅ν΄ λΉλμ κ³Ό μλλ°°ν¬ μ§ν [Jenkins] CI/CDμ μ°λ¦¬μ μΉμ ν λΉμ Jenkins μ ν¨μ€λ μννΈμ¨μ΄ κ°λ° μ μ§μμ μΌλ‘ ν΅ν© μλΉμ€λ₯Ό μ 곡νλ ν΄μ λλ€. CI(Continuous Integration) ν΄ μ΄λΌκ³ ννν©λλ€. μ ν¨μ€μ λν΄ μμ보기 μ μ μ°μ CI/CDμ λν΄ λ¨Όμ μμλ³΄κ² μ΅λλ€. CI kingofbackend.tistory.com [STEP1] ν μ€νΈ μλ² λ΄ ν°μΊ£(port80)..
OS μ’ λ₯ OS λ ν¬κ² Windows, Linux, Unix, MacOS 4κ°μ§λ‘ λΆλ₯λ©λλ€. Linux μ’ λ₯ Linux λ ν¬κ² λ λν, λ°λΉμ, μ°λΆν¬ 3κ°μ§λ‘ λΆλ₯λλ©°, κ³μ΄μ λ°λ₯Έ ν¨ν€μ§ κ΄λ¦¬ λͺ λ Ήμ΄κ° λ€λ¦ λλ€ λ λν κ³μ΄μ yum μ μ¬μ©νκ³ λ λν μν°νλΌμ΄μ¦ νλλΌ CentOS λ°λΉμ, μ°λΆν¬ κ³μ΄μ apt-get μ μ¬μ©ν©λλ€.
wget vs curl wget κ³Ό curl μ λ λ€ μΉ μλ²λ‘λΆν° 컨ν μΈ λ₯Ό κ°μ Έμ€λ Linux 컀맨λμ λλ€. wget κ³Ό curl μ κ±°μ μ μ¬νμ§λ§ μ‘°κΈ λ€λ₯Έ λΆλΆμ΄ μμ΅λλ€. 곡ν΅μ HTTP, HTTPS, FTP νλ‘ν μ½μ ν΅ν΄ 컨ν μΈ λ₯Ό λ€μ΄λ‘λ νλ μ»€λ§¨νΈ λΌμΈ ν΄μ λλ€. HTTP POST request λ₯Ό μ§μν©λλ€. (μ¦, μΉμ¬μ΄νΈλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν μ μμ΅λλ€.) HTTP μΏ ν€λ₯Ό μ§μν©λλ€. μ€ν¬λ¦½νΈμ²λΌ μ¬μ©μ μΈν°λ μ μμ΄ μνλ μ μλλ‘ μ€κ³λμμ΅λλ€. μ€νμμ€μ΄λ©° 무λ£μ λλ€. 90λ λμ μμν νλ‘μ νΈμ λλ€. (wget μ 1995λ , curl μ 1996λ μ μμνμ΅λλ€.) metalink λ₯Ό μ§μν©λλ€. μ°¨μ΄μ wget κ°λ¨νκ³ μ§κ΄μ μ λλ€. λ³λμ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μνμ§ μμ΅λλ€...
μ΄ κΈμ DevEric λμ κΈμ μ°Έκ³ νμμ΅λλ€. νΈλμμ μ propagation μ€μ μ΄λ Springμμ μ¬μ©νλ μ΄λ Έν μ΄μ '@Transactional'μ ν΄λΉ λ©μλλ₯Ό νλμ νΈλμμ μμμ μ§νν μ μλλ‘ λ§λ€μ΄μ£Όλ μν μ ν©λλ€. μ΄λ νΈλμμ λ΄λΆμμ νΈλμμ μ λ νΈμΆνλ€λ©΄ μ€νλ§μμλ μ΄λ»κ² μ²λ¦¬νκ³ μμκΉμ? μλ‘μ΄ νΈλμμ μ΄ μμ±λ μλ μκ³ , μ΄λ―Έ νΈλμμ μ΄ μλ€λ©΄ λΆλͺ¨ νΈλμμ μ ν©λ₯ν μλ μμ κ²μ λλ€. μ§νλκ³ μλ νΈλμμ μμ λ€λ₯Έ νΈλμμ μ΄ νΈμΆλ λ μ΄λ»κ² μ²λ¦¬ν μ§ μ νλ κ²μ 'νΈλμμ μ μ ν μ€μ 'μ΄λΌκ³ λΆλ¦ λλ€. μ ν μ€μ μ΅μ νΈλμμ μ μ ν μ€μ μ '@Transactional'μ μ΅μ 'propagation'μ ν΅ν΄ μ€μ ν μ μμ΅λλ€. κ° μ΅μ μ μλμ κ°μ΅λ..
Simsλμ κΈμ μ°Έκ³ νμμ΅λλ€. νλ‘κ·Έλλ°μ νλ€ λ³΄λ©΄ λ€μν μ€λ₯κ° λ°μνκΈ° μ½μ΅λλ€. κ°μ₯ λνμ μΈ μλ‘λ fileμ μ½μΌλ €κ³ νλλ° ν΄λΉ fileμ΄ μλ κ²½μ°, 0μΌλ‘ λλλ κ²½μ° λ±λ±.. μ½κ² μ ν μ μλ μ€λ₯λ€μ΄ λ§μ΄ μμ£ . μ΄λ¬ν μ€λ₯λ₯Ό μ²λ¦¬νλ κ²μ 'μμΈ μ²λ¦¬'λΌ λ³Ό μ μμ΅λλ€. κ·ΈλΌ μ΄λ»κ² μμΈ μ²λ¦¬λ₯Ό ν μ μλμ§ μ΄ν΄λ³΄λλ‘ ν©μλ€. μμΈμ²λ¦¬ != λ²κ·Έ μ, μΌλ¨ μ€λ₯λ₯Ό λΆλ₯ν΄ λ΄ μλ€. μμμ κ°λ¨νκ² 2κ°μ§ μ€λ₯λ₯Ό λ§μλλ Έμ΅λλ€. 첫 λ²μ§Έλ νμΌμ΄ μ‘΄μ¬νμ§ μλ κ²½μ°, λ λ²μ§Έλ 0μΌλ‘ λλμμ λ μ€λ₯μ λλ€. λ λ€ μ€λ₯μ§λ§ μμΈν μ΄ν΄λ³΄λ©΄ νΉμ§μ΄ μ‘°κΈ λ€λ¦ λλ€. 첫 λ²μ§Έ, νμΌμ΄ μ‘΄μ¬νμ§ μλ κ²½μ°μ μ€λ₯λ νλ‘κ·Έλλ¨Έκ° μμμ νκ³ μμΈ μ²λ¦¬λ₯Ό ν΄μ€μΌ νλ κ²½μ°μ λλ€. μ¦, ..
// λ°λ³΅ν΄μ νμν λ΄μ© νΉμ λ°λ³΅ν ꡬ문 μ΄ λ, μνμ© λ³μλ₯Ό statusλΌκ³ μ§μ νλ€λ©΄ μλμ κ°μ΄ νμ©ν μ μλ€. ${status.current} νμ¬ forλ¬Έμ ν΄λΉνλ λ²νΈ ${status.index} 0λΆν°μ μμ ${status.count} 1λΆν°μ μμ ${status.first} 첫 λ²μ§ΈμΈμ§ μ¬λΆ ${status.last} λ§μ§λ§μΈμ§ μ¬λΆ ${status.begin} forλ¬Έμ μμ λ²νΈ ${status.end} forλ¬Έμ λ λ²νΈ ${status.step} forλ¬Έμ μ¦κ°κ° νμ© μ / μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€.
μ μ (Static)μ΄λ? μ μ (static)μ κ³ μ λμ΄λ μλ―Έλ₯Ό κ°μ§κ³ μμ΅λλ€. Staticμ΄λΌλ ν€μλλ₯Ό μ¬μ©νμ¬ Staticλ³μμ Staticλ©μλλ₯Ό λ§λ€ μ μλλ° λ€λ₯Έλ§λ‘ μ μ νλμ μ μ λ©μλλΌκ³ λ νλ©° μ΄ λμ ν©μ³ μ μ λ©€λ²λΌκ³ ν©λλ€. (ν΄λμ€ λ©€λ²λΌκ³ λ ν©λλ€.) μ μ νλμ μ μ λ©μλλ κ°μ²΄(μΈμ€ν΄μ€)μ μμλ λ©€λ²κ° μλλΌ ν΄λμ€μ κ³ μ λ λ©€λ²μ λλ€. κ·Έλ κΈ°μ ν΄λμ€ λ‘λκ° ν΄λμ€λ₯Ό λ‘λ©ν΄μ λ©μλ λ©λͺ¨λ¦¬ μμμ μ μ¬ν λ ν΄λμ€λ³λ‘ κ΄λ¦¬λ©λλ€. λ°λΌμ ν΄λμ€μ λ‘λ©μ΄ λλλ μ¦μ λ°λ‘ μ¬μ©ν μ μμ΅λλ€. μ μ (Static) λ©€λ² μμ± Static ν€μλλ₯Ό ν΅ν΄ μμ±λ μ μ λ©€λ²λ€μ Heapμμμ΄ μλ Staticμμμ ν λΉλ©λλ€. Static μμμ ν λΉλ λ©λͺ¨λ¦¬λ λͺ¨λ κ°μ²΄κ° 곡..
κ°λ° μ΄μκ° λλΆλΆ κ·Έλ μ§λ§, κΈ°μ μ μΈ μΈ‘λ©΄λ³΄λ€ μμΈλ‘ μμ¬μν΅ λ¬Έμ κ°μ μΈμ μμκ° μμΈμ΄ λ λκ° λ§μ΅λλ€. μΊλ¦¬ ν리첼μ "μ κ°λ°μλ μλͺ»λ κΈ°μ μ νμ λ°₯ λ¨Ήλ―μ΄ νλ?"λΌλ μ λͺ©μ λΈλ‘κ·Έ κ²μκΈμμ κ·Έ μμΈμ λ€μ― κ°μ§λ‘ λΆλ₯νμ΅λλ€. νλμ© μμλ³΄κ² μ΅λλ€. μ΄ κΈμ μ κ°λ°μλ μλͺ»λ κΈ°μ μ νμ λ°₯ λ¨Ήλ―μ΄ νλ? μ Optimizing Java λΌλ μμ μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. μ§λ£¨ν¨ κ°λ°μλ λλΆλΆ μκΈ° μν μ μ§λ£¨ν¨μ λλΌκ³ λκ° μλ‘κ³ λμ μ μΈ μΌμ μ°Ύμ κ°μ νμ¬ λλ μμ λ€λ₯Έ κ³³μΌλ‘ λ λ κΆλ¦¬λ₯Ό νλ μ¬λλ μμ΅λλ€. νμ§λ§ μ¬λ΄μ λ±ν λ§λ ν κΈ°νκ° μκ±°λ λ€λ₯Έ νμ¬λ‘ μ΄μ§νλ κ² μ¬μμΉ μμ λλ μκ² μ£ . λ¬Όλ‘ , μ§λ£¨ν μΌμμ μ μ°Έκ³ κ²¬λ λΏλ§ μλλΌ μΈλ € λ μ½κ³ νΈ..
μΆμν΄λμ€λ abstarctλ₯Ό μ¬μ©νκ³ μΈν°νμ΄μ€λ interfaceλ₯Ό μ¬μ©νλ©΄ ꡬνν μ μμ΅λλ€. νμ§λ§ μΈμ μΆμν΄λμ€λ₯Ό μ¬μ©νκ³ μΈμ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν΄μΌ ν κΉμ? μλ§ λ§μ μ£Όλμ΄ κ°λ°μλΆλ€μ΄ λͺ μΎν λ΅μ λ΄λμ§ λͺ»ν κ²μ΄λΌκ³ μκ°ν©λλ€. μ λν μΆμν΄λμ€μ μΈν°νμ΄μ€μ μ μ ν μ¬μ© μ©λλ₯Ό μΈμ§νμ§ λͺ»ν μ± κ°λ°μ ν΄μμ΅λλ€. κ·Έλμ μ΄λ²μ μΆμν΄λμ€μ μΈν°νμ΄μ€μ λν΄ μμ λ³΄κ³ μ ν©λλ€. μΆμν΄λμ€ μΆμν΄λμ€λ μΌλ°ν΄λμ€μ λ³λ° λ€λ₯Ό κ²μ΄ μμ΅λλ€. λ¨μ§, μΆμ λ©μλλ₯Ό μ μΈνμ¬ μμμ ν΅νμ¬ μμ ν΄λμ€μμ μμ±νλλ‘ μ λνλ ν΄λμ€μ λλ€. κ·Έλμ λ―Έμμ± μ€κ³λλΌκ³ λ ννν©λλ€. κΈ°λ³Έμ μΌλ‘ μλ μ½λμ κ°μ΄ μμ±νκ² λ©λλ€. public abstract class ν΄λμ€μ΄λ¦{ public..
μ΄λ² κΈμμλ AWS EC2λ₯Ό μ΄μ©νμ¬ Node.jsλ₯Ό λ°°ν¬ν΄λ³΄κ² μ΅λλ€. μ°λΆν¬λ₯Ό ν΄λ³΄μμ§ μμλ€λ©΄ μ‘°κΈ μ΄λ €μ΄ λΆλΆμ΄ μμ μλ μμ΅λλ€. AWS EC2 μμνκΈ° EC2 κ°μ κ²½μ° S3μ λ€λ₯΄κ² λΉμ©μ΄ κ½€ λμ΅λλ€. κ·Έλ¬λ―λ‘ νμν κ²½μ°κ° μλλ©΄ λ°λμ μΈμ€ν΄μ€λ₯Ό μ€μ§ν΄μΌ ν©λλ€. μλ κ²½μ° μ²κ΅¬μ λ³΄κ³ μ μ²λΌ κΉμ§ λλλλ€ γ γ AWS EC2μ μ μνκ³ , μΈμ€ν΄μ€ μμ λ²νΌμ λλ¬μ€λλ€. μ°λΆν¬λ₯Ό μ¬μ©ν κ²μ΄κΈ°μ 18.04 λ²μ μ μ°λΆν¬λ₯Ό μ νν΄μ€λλ€. μΈμ€ν΄μ€ μ ν μ νμμ μ΄λ―Έμ§μ κ°μ΄ 체ν¬νκ³ κ²ν λ° μμ λ²νΌμ λλ¬μ€λλ€. μμ λμ΄μμ 7λ¨κ³μμ 보μ κ·Έλ£Ή νΈμ§μ ν΄λ¦ν΄μ€λλ€. ν μ€νΈμ©μ΄κΈ°μ λ€μκ³Ό κ°μ΄ ꡬμ±νμμ΅λλ€. μ μΈκ³ λꡬλ μ무 κ³³μμ λ€μ΄μ¬ μ μμ΅λλ€. κ·Έλ¦¬κ³ κ²ν λ° μμ ..
μ΄μ κΈ 'Route 53 λλ©μΈ ꡬ맀 ν μ°κ²°νκΈ°'μμ λλ©μΈ ꡬ맀 ν S3μ μ°λμμΌ°μ΅λλ€. νμ§λ§ Httpλ‘ μ μλκΈ° λλ¬Έμ μ΄λ₯Ό Httpsλ‘ λ°κΏλ³΄λ μμ μ νκ² μ΅λλ€. Httpsλ‘ λ°κΎΈκΈ° μν΄μλ S3, CloudFront, AWS Certificate Manager, Route53 μ μ΄μ©ν΄μΌ ν©λλ€. S3λ μ μ μΈ μΉ νΈμ€ν μ΄μ¬μ EC2μ κ°μ λμ μΈ μΉ νΈμ€ν μ Httpsλ EC2μ Load Balancerλ₯Ό μ΄μ©ν΄μΌ ν©λλ€. Route53μμ λλ©μΈ ꡬ맀 ν S3λ‘ λ°°ν¬νλ€λ κ°μ νμ μ§ννκ² μ΅λλ€. AWS Certificate Manager AWSμ μ μνμ μ Certificate Managerλ‘ μ΄λν©λλ€. μ¬κΈ°μ μ£Όμν μ μ΄ μλλ° λ°λμ λ―Έκ΅λλΆ(λ²μ§λμ λΆλΆ)us-east-1λ‘ ..
κΈμκ° κ²μ μμΌλ‘ λ³΄μΌ μ μ€λ₯Έμͺ½ μλ¨μ λ¬ λͺ¨μμ λλ¬μ£ΌμΈμ :) Amazon Route 53λ λμ κ°μ©μ±κ³Ό νμ₯μ±μ΄ λ°μ΄λ ν΄λΌμ°λ μΉ μλΉμ€μ λλ€. ννμ΄μ§ κ°μλ©΄ λ μμΈν λ³΄μ€ μ μλλ° μ΄λ² κΈμμλ λλ©μΈμ ꡬ맀νμ¬ μ€μ νλ λ°©λ²μ λν΄ μμλ³΄λ €κ³ ν©λλ€. μ κ°μ κ²½μ° ν¬νΈν΄λ¦¬μ€λ₯Ό example.com μ λλ©μΈμ κ°μ§ μΉ μ¬μ΄νΈλ‘ λ§λ€κ³ μΆμ΄μ μΉ΄ν24, κ°λΉμ λ±μ μμ보λ€κ° AWS S3, EC2, RDS λ± AWS κ΄λ ¨ν ν΄λΌμ°λλ₯Ό μ¬μ©ν μ μ΄ μμ΄μ μ΄λ²μλ AWS Route 53μ μ¬μ©νκΈ°λ‘ κ²°μ νμ΅λλ€. AWSλ 1λ κΈ°μ€ νν 15,000μ(com κΈ°μ€, 12$) μ λμ λλ€. μΉ΄ν24κ° 22,000μ, κ°λΉμκ° 13,500μ νλ κ² κ°μ΅λλ€. μΉ΄ν24μμ .comμ΄ λ±λ‘λΆ..
μ΄ν΄λ¦½μ€μμ *.javaλ₯Ό λ¨μΆν€ λλ¬μ μ€νμν¬ μ€λ§ μμμ§ *.java νμΌμ΄ μ΄λ ν κ³Όμ μ κ±°μ³ μ€νμ΄ λλμ§λ μμ§ λͺ»νμ΅λλ€. λ°λΌμ μλ° μ»΄νμΌλ¬λ μ΄λ€ μν μ μννλ©°, μ΄λμ λ§μ΄ λ€μ΄λ³Έ JVMμ 무μμΈμ§ κ·Έλ¦¬κ³ μλ°μμ *.javaλ₯Ό μ΄λ»κ² μ»΄ν¨ν°κ° μ€νμν€λ μ§μ λν κ³Όμ μ μμλ³΄λ €κ³ ν©λλ€. νλ¦° λΆλΆμ΄λ μ§λ¬Έ μ¬νμ΄ μμΌμλ©΄ μΈμ λ μ§ λ§μν΄μ£ΌμΈμ :) μ 체μ μΈ μλ°μ μ€νκ³Όμ μ κ·Έλ¦Όμ μ 체μ μΈ μλ°μ μ€νκ³Όμ μ 보μ¬μ£Όκ³ μμ΅λλ€. μ¬μ€ λ κΉμμ΄ νκ³ λ€λ©΄ μ΄κ²λ³΄λ€ ν¨μ¬ λ§μ κ²λ€μ΄ μ‘΄μ¬νμ§λ§, μ΄λ² κΈμμλ μ΄μ λλ§ μμλ³΄κ² μ΅λλ€. ν΅μ¬ν€μλ *Java Compiler , *JVM , *Interpreter , *JIT compiler Java Compiler with binar..