목록전체 글 (229)
DevKim
🏃CH.08 AWS EC2🏃 ✔ git clone -> pull 📌 Clone 받을 환경 만들기 EC2에 깃 설치 sudo yum install git 잘 설치되었나 확인해보자 git --version 프로젝트를 저장할 디렉토리를 생성 mkdir ~/app && mkdir ~/app/step1 이동 ~ cd ~/app/step1 git에 올린 프로젝트 clone git clone 주소 파일이 잘 복사되었나 확인 cd 레포명 ll 코드들이 잘 수행되는지 확인 ./gradlew test 누락된 파일이 있어서 다시 추가해준 뒤, pull 해줬다. 권한이 없다는 메시지가 뜬다면 아래를 입력해주고 다시 test를 해보자 chmod +x ./gradlew build successful이 나오면 성공!! ✔ 프로젝트..
🏃 CH.07 AWS RDS 🏃 ✔ DB 엔진 : MariaDB MySQL 대신 MariaDB를 사용해야하는 이유는 다음과 같다고한다. 1. 동일 하드웨어 사양으로 MySQL보다 향상된 성능 2. 다양한 기능 3. 다양한 스토리지 엔진 등등.. MySQL 에서 MariaDB 로 마이그레이션 해야할 10가지 이유 MySQL 에서 MariaDB 로 마이그레이션 해야할 10가지 이유 2015년 초 글, 아직까지 지켜봐야할 것 같지만:-) 1) MariaDB 개발이 좀 더 개방적이고 활발함 – MySQL 5.7 커밋 로그엔 컨트리뷰터들이 @oracle.com – xdhyix.wordpress.com 이러한 이유로 MariaDB 사용을 추천한다고한다. ✔ DB 인스턴스 생성 후, RDS 운영환경에 맞는 파라미터를..
🏃CH.06 AWS EC2🏃 ✔ 먼저, AWS에 대해 알아보자. 24시간 작동하는 서버에는 3가지 선택이 있다. 하나는 클라우드 서비스이고 나머지 둘은 호스팅서비스나 PC를 24시간 구동시키는 어마무시한 방법이있다. AWS는 클라우드 서비스에 속한다. 나머지 두개가 저렴하지만, 만약 특정 시간에만 트래픽이 몰린다면, 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 📌 클라우드 서비스 - 인터넷(클라우드)를 통해 서버,스토리지(파일 저장소), DB, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. - 단순히 물리 장비를 대여하는 것이 아니고, 그 안에서 로그 관리, 네트워크 관리 등을 기본적으로 지원하고 있다. 📌 클라우드 서비스 형태 1. Infrastructure as a ..
🏃CH.05 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현🏃 * TODO : 리팩토링 * IndexController에서 세션값을 가져오는 부분, 즉 (SessionUser) httpSession.getAttribute ~ 부분은 다른 컨트롤러나 메소드에서 세션값이 필요할 때마다 반복되는 코드로, 개선이 필요한 나쁜 코드이다. 이를 메소드 인자로 세션값을 바로 받을 수 있도록 변경하는 부분은 지금 단계에서 이해하기 어려운 부분이 있기 때문에 나중에 todo로 남겨두겠다. https://console.cloud.google.com/ Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts...
🏃CH.04 머스테치로 화면 구성하기🏃 이 책에서 머스테치를 사용하는 이유는 다음과 같다고한다. 1. 문법이 다른 템플릿 엔진보다 단순하며 2. 로직 코드를 사용할 수 없어, View의 역할과 서버의 역할이 명확하게 분리될 수 있고 3. .js / .java를 2가지가 다 있기 때문에 하나의 문법으로 클라이언트/서버 템플릿을 모두 사용가능하다 머스테치는 플러그인을 사용할 수 있고, build.gradle에 의존성을 추가해주면 바로 사용할 수 있다. 간단한 기본 페이지를 만들고 머스테치와 API가 잘 작동이 되는지 테스트를 해보자. - index.mustache 스프링 부트로 시작하는 웹 서비스 -IndexController 테스트 @RunWith(SpringRunner.class) @SpringBootT..
🏃 CH.03 🏃 3장부터는 하나의 게시판 페이지를 만들어보고, 7장에서 10장까지는 이 서비스를 AWS 무중단 배포하는 것까지 진행한다. 📌 Role #1 기본적으로 Builder 패턴을 사용한다. 📌 Role #2 Setter를 사용하지 않고, 기본적으로 생성자를 통해 값을 채우고, 값 변경이 필요한 경우엔 명확하게 그 목적과 의도를 나타낼 수 있는 메소드를 추가한다. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Posts { //id,title.content,author 생략 ... @Builder public Posts(String title, String content, String author) ..
오늘 드디어 이동욱님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 읽을 수 있는 시간이 생겼다. 이전에서도 Test code 작성시 Junit4가 익숙했는데, 이 책에서도 Junit4를 사용한다고해서 다행이라고 생각했다. 현재 버전 이슈가 많은 것 같은데, 패키지에 대해 잘 알고있다면 어렵지 않게 고칠 수 있는 에러들인 것 같다. 🏃 CH.01 🏃 우선 Junit4를 사용하기 위해선 아래를 build.gradle에 추가해주어야한다. //JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } 모든 책의 기본인 hell..
🏃 구현 기능 🏃 - 상품 주문 - 주문 내역 조회 - 주문 취소 [ 주문 도메인 생성 메서드 추가 ] 비즈니스 로직이 가장 복잡한 주문 도메인 부분이다. 📌 01. 주문 생성 메서드 만들기 생성자로 생성할 수도 있지만, 정적 팩토리 메서드를 사용함으로써 더 효과적으로 코드를 짤 수 있다. 정적 팩토리는 그 유명한 이펙티브 자바 첫장에 나오는 이야기이다. 자세한건 다음에 정리를 해봐야겠다. 도메인 주도 개발으로 실습을 진행하고 있기에, 해당 데이터가 있는 부분에서 비즈니스 로직을 해결한다. @Entity @Getter @Setter @Table(name = "orders") public class Order { @Id @GeneratedValue @Column(name = "order_id") priva..