spring boot νλ‘μ νΈλ₯Ό ec2 μ μ¬λ € mysql μ μ¬μ©νκ³ μ νλ€. κ·Έλ°λ° λ‘컬μμ λ€ λμκ°λλ° ec2μ ν΄λ‘ νλ ν μ€νΈμ½λλ λ§μ½μ΄κ³ λΉλλ μλλ€. λ체 λκ° λ¬Έμ μΈμ§ μ°Ύλ€ RDS λ₯Ό νμ©ν΄λ³΄λ €κ³ νλ€.
ν μν©μ λ‘컬μμ MySQL μ μ¬μ©νκ³ μΆμΌλ λ²μ κ΄λ¦¬ λ±μ μ©μ΄ν¨μΌλ‘ μΈν΄ Docker mysql image λ₯Ό λ°μ μ¬μ©νκ³ μλ€. μ΄λ₯Ό spring boot μ μ°λνμ¬ νλ‘μ νΈλ₯Ό λ‘컬μμμ MySQL μ μ¬μ©ν μ μλλ‘ νλ€. κ·Έλ°λ° μ΄κ±Έ ec2 μ μ¬λ¦°λ€λ©΄?
ec2 μ ssh λ‘ μ μν spring boot νλ‘μ νΈλ₯Ό ν΄λ‘ νλ€.
κ·ΈλΌ ec2 μΈμ€ν΄μ€μλ MySQL μ΄ μμκΉ? μλ€. λ‘컬μμλ docker compose λ₯Ό ν΅ν΄ MySQL μ΄ λμκ°κ³ μμ΄μΌ ν
μ€νΈμ½λλ λΉλλ λμκ°λ€.
κ·Έλ λ€λ©΄ ec2 μ docker λ₯Ό μ€μΉνκ³ docker-compose νμΌμ μμ ν΄μ ec2 μμμ docker-compose νμΌμ μ€ννμ¬ MySQL image λ₯Ό λ°κ³ database λ₯Ό μμ±νμ¬ μ¬μ©ν΄μΌ ν κ² κ°μλ°.. RDS λ₯Ό μ°λ©΄ κ΅³μ΄ μ΄ κ³Όμ μ΄ νμμμκ² κ°μμ μ¨λ³΄λ €κ³ νλ€.
μμ§ μ΅μ
μμ MySQL μ ν
ν
νλ¦Ώμμ ν리ν°μ΄ μ ν (μ΄κ±΄ νλ‘λμ
μΌλ‘ ν΄λ λ κ²κ°μλ° μΌλ¨ λμνλ κ²μ νμΈνλκ² μ΅μ°μ μ΄λ€.)
μ€μ μμ DB μΈμ€ν΄μ€ μλ³μμ μ격μ¦λͺ
μ μ€μ νλ€.
DB μΈμ€ν΄μ€ μλ³μλ μΈμ€ν΄μ€κ° μμ±λμμ λ λͺ©λ‘μ νμλ μ΄λ¦μ΄λ€.
λ§μ€ν° μ¬μ©μ μ΄λ¦μ DB μ μμ νμν username, λ§μ€ν° μνΈλ DB μ μμ νμν λΉλ°λ²νΈλ₯Ό μλ―Ένλ©° νλ‘μ νΈμμ MySQL μ¬μ©μ μ¬μ©νλ μ¬νμ κ·Έλλ‘ μ
λ ₯νλ€.
μΈμ€ν΄μ€ ꡬμ±μ t2.micro (μ§κΈ μ¬μ©μ€μΈ κ³μ μ ν리ν°μ΄κ° μλλ€.)
μ€ν 리μ§λ κ·Έλλ‘ μ μ§
μ°κ²°μ κΈ°μ‘΄ EC2 μ»΄ν¨ν
리μμ€μ μ°κ²°νκ³ ν΄λΉ EC2 μΈμ€ν΄μ€λ₯Ό μ ννλ€.
db μλΈλ· κ·Έλ£Ήλ κΈ°μ‘΄ νλͺ©μ μ ννλ€.
rds μμ±μ ν
μ€νΈν΄λ³Έλ€κ³ λ§λ€μλ€κ° μμ νμλλ° RDS λ°μ΄ν°λ² μ΄μ€λ₯Ό λ§λ€λλ§λ€ μ VPC 보μκ·Έλ£Ήμ΄ μμ±λλ κ² κ°λ€. μλ λ°±μ
κΈ°κ°λλ¬Έμ DB μΈμ€ν΄μ€ κ° μμ κ° μλκ³ μμ΄μ κΈ°μ‘΄ 보μκ·Έλ£Ή μμ μμ κ° μλκ³ μλ€. μΌμ£ΌμΌλ‘ κΈ°νμ μ€μ νμμΌλ λ€μμ£Ό μ€μ μμ λ₯Ό λ€μ μλν΄λ΄μΌκ² λ€.
λ°μ΄ν°λ² μ΄μ€ μΈμ¦μ μνΈ μΈμ¦μΌλ‘
μΆκ°κ΅¬μ±μμ λ°±μ 보쑴 κΈ°κ°μ 1μΌλ‘ μ€μ νμΌλ μμ λ‘μ΄ μ€μ ν΄λ λλ κ² κ°λ€.
μλ³ μΆμ μκΈ
μ΄μ λ μ¬μμ΄ μ μ½ 27000μ μ λ
λ¬΄μ¨ νμ
μ΄ λ¨λλ° κ·Έλλ‘ λ«μ쀬λ€.
μ΄λμ λ μμ±νλλ° μκ°μ΄ μμλμλ€.
RDS μμ±μλ£
TMIμΈλ° μ¬μ€ μ΄λμ λκΉμ§ 보μμ μμ΄ κ°μΆ°μΌ νλμ§ λͺ°λΌμ μ 맀ν건 λ€ κ°λ¦¬κ³ μλ€.
μμ±λ RDS λ₯Ό ν΄λ¦ν΄μ μ°κ²° & 보μμ 보면 μλν¬μΈνΈλ₯Ό νμΈν μ μλλ° μ΄κ² DB μ μ κ²½λ‘μ΄κ³ ν¬νΈκ° DB μ μ ν¬νΈκ° λλ€.
κΈ°μ‘΄μ λ‘컬μμ localhost:3306 μΌλ‘ μ μνλ€λ©΄ μ΄μ μλν¬μΈνΈκ°:3306 μΌλ‘ RDS μ μ μν μ μλ€.
.. κ·Έλ¬λ μ μν μ μμλ€.
μ΄μ§ΈμμΈκ° νκ³ ec2 μ μ§μ μ μν΄μ
sudo yum install mysql
mysql μ μ€μΉνκ³
mysql -u κ³μ -p -h hostμ£Όμ
μ§μ μ μν΄λ΄€λλ° μ΄κ±΄ κ°λ₯νλ€.
μκ°ν΄λ³΄λ νΌλΈλ¦ μμΈμ€ λΆκ°λ₯μΌλ‘ ν΄μ μ μμ΄ λΆκ°λ₯νκ° μΆμ΄μ μ€μ μμ νΌλΈλ¦ μμΈμ€ κ°λ₯μΌλ‘ μμ ν λ€μ RDS μ μμ μλνλ€.
μ¬μ ν μΈν 리μ μ΄μμ db μ μ μλμ dbms: mysql (no ver.) case sensitivity: plain=mixed, delimited=exact%0d%0a operation timed out. μ€λ₯κ° λ μ νΌλλ¬Όμ ν리λ λμ€ rds μ 보μκ·Έλ£Ή 2κ°μ€ νλ¨μ 보μκ·Έλ£Ήμμ
보μκ·Έλ£Ή μ΄λ¦μ΄ ec2-rds-2 λ‘ λμ΄ μλ 보μκ·Έλ£Ήμ μΈλ°μ΄λ κ·μΉμ΄ νλλ μ€μ λμ΄ μμ§ μμκ³ λλ¨Έμ§ rds-ec2-2 μ 보μκ·Έλ£Ή ID λ₯Ό 볡μ¬ν΄μ
μΈλ°μ΄λ κ·μΉ νΈμ§μ λ€μ΄κ° μ νμ MySQL λ‘, νλλ λ΄ IP, νλλ 볡μ¬ν rds-ec2-2 μ 보μκ·Έλ£Ή ID λ₯Ό μ νν΄μ μΆκ°νλ€.
IntelliJ μμ RDS μ MySQL κ³Ό μ°κ²°νκΈ° μ±κ³΅
μ°Έκ³ νκ³ μλ μμ [μ€νλ§ λΆνΈμ AWSλ‘ νΌμ ꡬννλ μΉ μλΉμ€] μμ λ³Όλ RDS λ₯Ό μμ±μ μ΄λ―Έ λ°μ΄ν°λ² μ΄μ€λͺ
μ μ§μ νμλ€κ³ νλ€. (MariaDB)
λ€λ₯Έ λΈλ‘κ·Έμμλ MariaDB μ νμ μΆκ° ꡬμ±μμ μ΄κΈ° λ°μ΄ν°λ² μ΄μ€ μ΄λ¦μ μ ννλ μ°½μ΄ μλ κ² κ°λ€.
λμ κ²½μ° MySQL μ μ ννλλ° λ°μ΄ν°λ² μ΄μ€ μ΄λ¦ μ§μ νλ건 μμλ€. μ¦, λ°μ΄ν°λ² μ΄μ€κ° μμ±λμ΄ μμ§ μλ ν μν©μ΄ μ¬λ°λ₯Έ μν©μμ μΈμ§νλ€.
μμ£Ό λ°μνκΈΈλ μ 리νλ€.
lsof -i tcp:8080
lsof : list open files, νμ¬ μμ€ν μμ μ΄λ¦° νμΌ λ° λ€νΈμν¬ μ°κ²°μ λν μ 보λ₯Ό νμνλ λͺ λ Ήμ΄
-i : λ€νΈμν¬ μ°κ²°μ νν°λ§νλ μ΅μ
=> tcp νλ‘ν μ½μ μ¬μ©νλ ν¬νΈ 8080μ λν μ°κ²°μ νν°λ§ν΄λ¬λΌλ λͺ λ Ήμ΄μ΄λ€.
sudo kill -9 23768
-9 : kill λͺ λ Ήμ΄μ μ λ¬λλ μ΅μ μΌλ‘ νλ‘μΈμ€λ₯Ό κ°μ λ‘ μ’ λ£νλ μκ·Έλμ μ§μ νλ€. 9 λ SIGKILL μκ·Έλμ λνλ΄λ©° μ΄ μκ·Έλμ νλ‘μΈμ€λ₯Ό 무쑰건μ μΌλ‘ μ’ λ£μν€λ κ°μ₯ κ°λ ₯ν μκ·Έλμ΄λ€.
-jar : jar νμΌμ μ€ννκ³ μ ν λ μ¬μ©, ν΄λΉ jar νμΌμ μ§μ νμ¬ μ€ν
*.jar : νμ¬ λλ ν 리μ μλ νμ₯μκ° .jar μΈ λͺ¨λ νμΌ
μλ² μ€ν λͺ λ Ήμ΄
java -jar *.jar
μ΄μ -plain.jar νμΌμ΄ μμ±λμ§ μλλ€.
μ¬μ ν ec2 μμ λΉλμ ν μ€νΈμ½λ μ€νμμ λ§νλ€. λν ν μ€νΈμ½λκ° μ€ν¨νλ€κ³ λ λ build - libs λλ ν 리μ jar νμΌμ΄ μμ±λμ΄ μ΄λ₯Ό μ€ννλ € νλλ° μ΄κ²λ μ€ν¨κ° λ¬λ€. μλ§λ application.yml νμΌμμ mysql μ€μ μ url μμ localhost λ‘ λμ΄ μλλ° μ΄ host λ₯Ό ec2 μ μλν¬μΈνΈλ‘ λ°κΏμ€μΌ μ€νμ΄ λμ§ μμκΉ μΆλ€.
local μ μμλ, ec2 μ μμλ μ΄μνκ²½μ νμΈνκ³ μμμ κ·Έμ λ°λ₯Έ yml νμΌμ μ€νμν¬ μ μλλ‘ νλ λ°©λ²μ μ°Ύμλ³΄κ³ μλ€.
ν μ€νΈμ½λλ μλμκ°λλ° μλ²λ λμκ°κ² λμλ€.
spring boot 2.4 μ΄ν profile μ΄λ κ²μ λ³κ²½μ¬νμ΄ μμλ€.
profile?
profile μ΄λ μ€νλ§μ κ° μ»΄ν¬λνΈλ€μ μ€μ μ νμν νκ²½ λ³μ κ°λ€μ λͺ¨μλμ νμΌμ΄λ€.
edit configuration μμ κΈ°λ³Έ profile μ dev λ‘ μ€μ νλ€.
νμΈν΄λ³΄λ test - resources - application.yml μ΄ μμ λμ§ μμμ application.yml μμ database url λ localhost λ‘ λνλμ§ μκ³ rds μ μλν¬μΈνΈλ‘ μμ ν΄μ€μΌ νλ€.
μμ μ¬ν :
κ²°κ³Ό
μ΄μ μ ν
μ€νΈκ° λͺ¨λ μ€ν¨νλκ² λ€μ Ec2 μ λ°°ν¬νλ
λ°°ν¬κ° μ±κ³΅νλ κ²μ μ μ μλ€. π
AWS μμ RDS λ₯Ό μ¬μ©νκΈ°κΉμ§μ κ³Όμ μ λμ΄μΌλ³΄λ©΄ λ€μκ³Ό κ°μ κ³Όμ μ κ±Έμ³ μ§ννλ€.
VPC μμ± - EC2 μμ± - 보μκ·Έλ£Ή, νλ ₯μ IP μ€μ - springboot νλ‘μ νΈ μμ± - RDS μμ±μ EC2 μΈμ€ν΄μ€μ μ°λ - RDS μλν¬μΈνΈ, νλ ₯μ IP ν보 - EC2 ssh μ κ·Ό - EC2 λ΄λΆμ springboot νλ‘μ νΈμ λ§λ java μ€μΉ, timezone μ€μ , hostname μ€μ - EC2 λ΄λΆμ github / gitlab νλ‘μ νΈ ν΄λ‘ (μ Έμ€ν¬λ¦½νΈ μ μ©μμ ) - EC2 λ΄λΆμ MySQL μ€μΉ λ° μ μνμ¬(νλ ₯μ IP, EC2 μμ ν€ νμ΄ μμ±, RDS μ μλν¬μΈνΈ νμ) λ°μ΄ν°λ² μ΄μ€ μμ± - RDS νΌλΈλ¦ μ€μ - μΈλΆμμ RDS μλν¬μΈνΈ λ° username, pw λ₯Ό ν΅ν΄ RDS μ MySQL DB μ κ·Ό (IntelliJ database, MySQL workbench database μ°λ)
μ΄μνκ²½μ λ°λΌ application.yml μ΄ λ€λ₯΄κ² λμνλκ²κ³Ό λ‘컬μμμ²λΌ EC2 λ΄μμ λΉλμ ν μ€νΈμ½λκ° μ±κ³΅νλλ‘ νλ κ²κΉμ§ νμΈλλ©΄ λ°°ν¬κΉμ§μ μ Έ μ€ν¬λ¦½νΈ μλν μμ μ νκ³ μΆν GitLAB μ pipline μ€μ μ ν΅ν΄ νλ‘μ νΈμμ push λ§ νλ©΄ ν μ€νΈ μ κ², λΉλ λ° λ°°ν¬κΉμ§ μΌλ ¨μ κ³Όμ CI/CD μμ κΉμ§ νλ κ²μ΄ λͺ©νλ€.
μ΄μ 리λ μ€ λͺ λ Ήμ΄λ₯Ό μ¬μ©ν λ μ΄λ€ λμμνλ €λ©΄ μ΄λ€ λͺ λ Ήμ΄κ° νμνμ§ μ°Ύμλ³΄κ³ κ·Έλλ‘ μ λ ₯λ§ νλ€λ©΄ μ΅κ·Όμ λͺ λ Ήμ΄μ μ΄λ€ μ΅μ μ΄ μ΄λ€ λμμ νλμ§κΉμ§ νμΈν΄λ³΄λ λ μ΄ν΄κ° μ λκ³ μλ€. κ°μμ€λ½μ§λ§ μ μ μΌνλ κ³³μμ λ©ν λ‘ λ§μ μ‘°μΈμ ν΄μ£Όμ ¨λ λΆλ€κ» μ λ§ κ°μ¬ν λ§μμ΄ λ λ€. νλλΌλ λͺ¨λ₯Έ μ± κ·Έλ₯ λμ΄κ°μ§ λ§κ³ νμ€ν μμκ°λ μ΅κ΄μ λ€μ΄κ³ μ λ Έλ ₯ μ€μ΄λ€.