#1: It's a Game 돈은 게임이다. : 규칙과 방식을 학습 #2:Don't Be a Hater of Money : 돈을 싫어하지 말아라. #3: It's a Doubles Game : 돈은 복리 게임 위험자산, 장기투자 #4: Seduction : 세덕션: 유혹 돈을 유혹하라. : 집착x #5: Timing 속도와, 삭감 #6: Boredom : 따분함 돈은 지루한 것을 싫어한다. 당신을 위해 돈이 일해야한다. #7: Secret Account 비밀 계좌 : 위기대응위한 #8: Don't Fly First Class 일등석에 타지마라. 천만달러(130억) #9: Compensation Plan 보상계획 사업에 세금공제 혜택이 있는이유 구실(taxes) 보상계획에 맞춰 위치해라. #10:EndOfTheWorldMentality 세상이 망해도 정신 시기를 관리: 기회다. #11: Study Your Politicians 정치인(특히 대통령)을 연구해라 그의 철학에 따라 사업을 조정 #12: Study Smart Investors 현명한 투자자를 연구해라 사고, 사고방식 #13: Play Your Game.Don't Compare 당신의 게임을 할것.비교 금지 #14: Index 지수를 이기려고 하지말고. 내 목적과 데드라인을 이겨라 #15: Befriend Money Makers 돈벌이와 친구되기 어울리는 사람, 같이 일하는 사람, 생활 수준, 행동, 규율. #16: Diversification is for Sissies 다각화는 남을 위한것. 말년에 한다면 좋겠지만 원하는 곳을 가기에는 좋지않다. #17: Leverage 영향력,지랫대 레버리지는 성장 게임 더 많은 지원 받기 확장 자신을 더 마케팅 고객에게 더 빨리 다가가세요 비즈니스 성장의 속도를 높이기 #18: Positioning 위치잡기 신용, 수입, 저금, 투자 #19: Strategic Partnerships 전략적 파트너쉽 같이 수익을 올리기위한 파트너쉽 #20: Big Check Syndrome 큰 금액 증후군. 작은 고정수입의 중요성.
1. 기출문제집 구입, 해답보기, 기본서 정하기 > 합격 수기 많이 나온 책 2. 기출문제 해설을 기본서에 표시 공부할 부분, 안해도될 부분 구별, 패턴 분석 목표 점수를 설정할것 . 강사는 빠짐없이 200점 목표로 가르침 70~75점 목표면. 기출문제부분만 확인하면됨. 3. 해설과 기본서 내용을 비교하며 기본서 내용 이해. 4. 기본서 해설이 완전히 이해 된 후에 문제 풀이 시작. 쟁점별로 답이 되는 지문이 무엇인지 체크 패턴화. 5. 회독법 : 공부 마무리 단계 : 2번 정도 추천
독서법 시작하는 독서법 작심삼일 : 사람의지 평균 유통기한 3일 의지 : 나의 특성에 맞지 않는 것을 해보려는 시도 : 시작은 의지가 필요하나 이어나가는 것은 의지가 안들게 쉽게 성공하거나 어렵게 실패하거나 1. 읽기 쉬운책, 흥미가 가는책 : 고르는 것에 진심이어야, 만만하게 읽을수 있는 책 : 필요도 독자의 의지를 필요로하게함. 2. 독서 갯수를 꽉채워서 빌릴것 : 첫 30페이지만 읽기 >> 30페이지만 읽는걸 넘어가는 책을발견>> 완독 1권.
피해야 할 것: 효과에 목매지 말것.
독서의 효과 1. 자아강화 효과 : 생각 특성, 정서 변화 : 책은 얼어붙은 내면의 바다를 깨는 도끼여야 한다. : 내가 흥미로운 책 2. 언어 능력 : 사고력 : 작가의 생각의 체계를 독자의 머리로 재생. : 독서현상 : 처음은 뻑뻑 생각의 주파수가 달라서. 싱크가 맞으면 시간가는줄모름. : 세시간 독서 = 세시간 동안 생각 : 효용은 읽기 쉬운책 흥미있는책이 높음. : 지식책은 언어능력 향상효과 없음, 이야기책은 높음.
100% 흡수하는 독서법 1. 정독 : 소리내 읽는 정도, 속독은 안됨. : 언어능력이 떨어지면 소설책 4권읽기. ex) 초등 고학년 동화 2. 나라면 어땠을까 생각하기 : 사고력향상 : 인물이 그장면 외에 했던 사소한 행동, 정체성을 보고 고민 : 독서란 작가의 사고를 내 사고로 만드는 행위 3. 작가의 의도 읽기 : 3권 책당 1가지 작가의 의도를 읽어내면 구조를 읽게됨(독법)
다독 : 많이 읽어라 그러나 많은 책을 읽지는 마라.- 벤자민프랭클린 : 다독을 하면 속독을 하게되서 사고를 막는 단점도 있음. : 30분 읽다가 여러번 읽는 것이 베스트 : 독서를 낚시처럼
독서의 최고 효과 : 한달에 한번이라도 강도가 센책을 만나면 다른사람이 되는 듯한 효과가 나온다.
1. 자의식대로 살아간다. 2. 남이 성공했다고 하는 방식을 그대로 따라한다. 3. 뇌 최적화를 소홀히 한다. 아니 무시한다. 4. 간절히 믿으면 우주가 도와준다 따위의 자기최면만 강화할 뿐 효과있는 실천을 하지 않는다. 5. 책에 정답이 있다는 걸, 즉 책이 곧 공략집이라는 걸 알지못한다.
1. 기본 근력을 다진다. 2. 축구 기술을 15가지로 나누고 이를 매일 연습한다. 3. 실제 축쿠경기를 뛰면서 자신의 훈련법이 맞는지 확인한다.(실행) 반복적으로 패배하면서 한계를 확인한다(메타인지) 4. 1번으로 돌아간다 이를 몇년 반복하면 실력이 지속적으로 향상된다.
역행자의 7단계 모델
1. 자의식 해체
: 인간 자아가 붕괴되는 것을 막는 기제지만 발전을 가로막는다. 해야할일을 안하는 것으로 합리화, 무시
자아 이미지 심리학 Psycho Cybernetics 인간은 항상 자기 자신과 환경에 대해 스스로가 진실이라고 믿는 이미지에 따라 행동하고 느끼고 실천한다.
합리적사고 -> 의식적 결정+상상력을 통한 목표 대상과의 커뮤니케이션 -> 자아 이미지 극적인 변화 = 새로운 자기통제 매커니즘
성공적인 Successful
진실된 자아 이미지
아주 작은 성공의 경험
한 사람을 정해 철저하게 연구하라 - 동경하는 성격, 성품, 인생, 업적을 성취한 사람들에 관한 스크랩
지금 나를 제한하는 것은?
목표, 신뢰, 긴장풀기, 학습, 실천
정신적 영화 기법
확신은 거짓말보다 더 위험한 진실의 적이다. - 프리드리히 빌헬름 나체 긴장을 푸는 이미지 훈련법. - 꼭두각시, 풍선, 평온한 장면
해결 지향적 용법
행복은 훌륭한 치료약 - 행복은 추구하는 것, 위험과 문제에 정면으로 맞서라.
-성공 구성 성격- 방향감각(목표, 기대, 희망), 이해(의사소통, 실수=교훈), 용기(자기 안의 무한한 자원을 활용), 관용(타인을 가장 중요한인물인 것처럼 대함 => 내가 가장 중요한 인물이란 이미지 영향), 존중(다른 사람을 가치있는 대상으로 여기는 훈련-> 내가 가치있는 사람이란 이미지 영향), 자신감(실패가 아닌 성공의 경험을상기- 믿음회복), 자기긍정(불완전함을 감정적으로 인정, 기다리지 말고 바로 시작)
역경지수(AQ Adversity Quotient)를 높여라
- 실패 구성 성격 - 욕구불만(유가기적 특성- 불만족스러워하면 문제해결), 공격성(욕구불만 + 좌절상태, 울분의 형태, 감정분출 적절한 경로 필요. ), 불안감(잘못된 측정 잣대, 완벽한 것과 비교), 고독감(감정적 유대감 단절, 노출, 상처, 모욕감에서 자아보호, 타인 두려움), 불확실성(완벽을위해 결정을 내리지 않거나 성급한결정, 소인만 완벽함을 추구한다, 단기적인 불확실성을 받아들이는 방법을 배워야 한다. ), 분노(반복된 느낌, 자신의 중요성 과대평가, 자신의 억울함을 입증), 공허감(부적절한 자아 이미지, 가치있는 목표, 삶을 즐길줄 알기, )
부정적인 생각을 발견하고, 수정한다. 일과 마칠때, 점심때, 부정적인 메터니즘을 바꿔라.
위기상황 - 이미지 훈련-> 흥분
자아 구속 고삐 풀기 - 즉흥적으로 말하기, 무계획, 자기비판 멈추기, 평소보다 큰소리, 좋아하는 사람 사실 알리기
나의 필터
자아 이미지 심리학 Psycho Cybernetics
: 자기가 갖고 있는 이미지대로 행동한다. 자기가 갖고 있는 이미지만 사용(규정)하기에 실제 발현되지 않은 능력이 많다.
성공적인 Successful
: 결과에 집착하지 않는 성공적인 사람이 되라
진실된 자아 이미지
: 적절하고 합리적인 수준의 자기자신되기.
: 판단 없이 있는그대로 자신을 인정하고(장단점 포함), 신뢰하고, 부끄럼없이, 창의적으로 자유롭게 표현
정신 영화기법
: 성공의 순간을 하나의 뚜렷하고 단순하며 생상한 이미지로 떠올리기
: 신은 우리를 평화롭고, 자신감 있고, 활기찬 존재로 본다.
: 우리의 목표는 독특한 성격과 업적을 개발하는것.
창조성
1. 걱정은 돈걸기 전에. - 결심과 동시에 실천하는 습관, 자물쇠상자(정보, 관심사 수집, 장단점 조사 저장창고에 저장)
2. 지금 이순간에 반응하는 습관-관찰력 추진력, 꽉찬 하루(오늘 열심히 )
3. 한번에 한가지- 모래시계의 교훈,
4. 하룻밤 자고 나서 다시 생각하라 - 다음날 성취했으면 하고 바라는 것을 생각하고 잠든다.
5. 일하는 동안에는 긴장을 풀어라
이제는 이 하찮은 것을 들여다 보며 시간을 더는 낭비하지 않을 거야.
시험을 잘 보든 못 보든 나는 이제 털끝만큼도 개의치 않을꺼야
과민반응- 소모적인 반사를 없앤다. 근육이완. 매일 반드시 휴힉취하기
1. 목표 설정
정확한 목록을 작성한 후 자아 이미지를 분석한다.
2. 신뢰하라
자아 이미지에 들어 있는 제한되고 잘못된 프로그램을 구별해서 이를 우리 목적에 맞게 체계적으로 바꾼다.
3. 긴장을 풀어라
실수하면 즉시 진로를 수정해서 목표를 달성한다.
자아 이미지를 재프로그래밍하고 관리하는데 상상력을 활용한다.
자기 통제 매커니즘과 효과적으로 의사소통하기 위해 자아이미지와 상상력을 함께 이용한다.
이는 자동 성공 메커니즘처럼 작동하면서 장애물을 만나는 경우 뒤로 물러서는 행동을 포함해 목표를 향해 꾸준히 나아가게한다.
비록 자신의 한계를 넘어서는 경우라 하더라도 특정한 목적을 달성하기 위해 필요한 아이디어나 정보로 또는 해결책을 정확하게 제공하는 거대한 검색 엔진처럼 자기 통제 매커니즘을 활용한다.
하이버네이트 개발한 가빈 킹 이 주도적으로 참여 만든 표준 . JPA 1.0 2006년 : 초기버전, 복합키, 연관관계기능 부족 JPA 2.0 2009년 : 대부분의 ORM 기능 포함하고 JPA Criteria가 추가 JPA 2.1 2013년: 스토어드 프로시져 접근, 컨버터, 엔티티 그래프 기능 추가. cf) java8 2014년, Hibernate5 2017년 JPA 2.4 의 hibernate 5.4.31(2021)
장점 생산성, 유지보수, 패러다임 불일치 해결, 성능(재사용) 데이터 접근 추상화, 벤더 독립성(다른종료 DB사용가능)
1. SQL 기존 문제점 : 반복(CRUD 계속 작성), SQL의존적 개발(필드 수정시 전체 수정, 엔티티를 신뢰할수없다), JPA와 문제해결. 2. 패러다임 불일치 : 상속(persist 1회로 해결), 연관관계(FK), 객체 그래프 탐색(지연로딩), 비교(find())
JPA 구현체
= JPA 프로바이더 = ORM 프레임워크 Hibernate 하이버네이트 << 이거 보통 사용. EclipseLink 이클립스링크 DataNucleus 데이터 핵심(데이터 뉴클리어스) * provider 제공자.
jpa 사용
핵심 라이브러리 hibernate-core.jar hibernate.jpa2.1.api.jar
영속 컨텍스트 : 엔티티 타입 +식별자 키로 사용하는 일종의 보관소. JEE 컨테이너를 사용하면 실행환경에 따라 여러 EntityManager 가 한 개의 영속 컨텍스트를 공유할수도 있다. 캐시 공유.
1. EntityManagerFactory emf = Persistence.createEntityManagerFactory() ; EntityManager em = emf.createEntityManager(); : EntityManager 생성 2. ENtityTransaction trans = em.getTransaction(); trans.beging() : 트랜잭션 시작 3. User user = new User(); em.persist(user); :EntityManager를 통해 영속 컨텍스트에 객체 추가하거나 구한다. 4. trans.commit(); / trans.rollback() :트랜젝션 커밋 5. em.close() : EntityManager 닫기.
User user = entityManager.find(User.class, "A@A.com"); user 엔티티의 아이디 A@A.com 찾기
환경설정 & 기본 코드
apllication.xml
전용속성 hibernate.show_sql :SQL 출력 hibernate.format_sql: 자동정렬 출력 hibernate.use_sql_commentss: 주석도 같이 출력 hibernate.id.new_generator_mapping: false(default) : jpa 표준에 맞춘 새로운 키 생성 전략을 사용. allocationSize 속성사용바뀜 hibernate.hbm2ddl.auto : - create(스키마 자동생성) - create-drop(create속성 + 종료후 생성한 DDL 제거 : drop +create+drop) - update(변경사항만 수정) - validate(변경사항 있으면 경고를 남기고 어플리케이션 실행안함) - none(자동 생성기능을 사용하지 않음, 속성자체를 삭제 or 유효하지 않은 값 입력.) jpa.hibernate.naming.physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl : 카멜 -> 스네이크 spring.jpa.hibernate.use-new-id-generator-mappings =true : 키 생성 전략시, false 일 겨우 기존 하비어네이트 시스템 유지보수. true 설정시 allocatonSize 속성 사용방식 달라짐. ** 운영주의 사항 : create, create-drop, update 옵션 사용 불가 개발단계에서만 *개발시 초기 create, update, 자동화테스트 ci서버 create or create-drop, 테스트 서버 update or validate, 스테이징, 운영은 validate or none JPA2.1부터 스키마 자동생성기능 표준으로 지원. 하지만 update, validate 옵션은 지원하지 않음. ????
JPA 어노테이션 패키지 위치 import javax.persistence.*;
JPA 실행 위한 기본 설정파일 persistence.xml - 구현체들이 자동으로 엔티티 인식못할때 설정가능, JPA 표준속성, 하이버네이트 속성 외 - persistence-unit : DB 이름 그와 관련 DB 설정
커넥션 풀 설정
spring.datasource.hikari.connection-timeout = 20000 : 최대 커넥션 수n spring.datasource.hikari.minimum-idle= 10 : #HikariCP 사용 유지 최소 커넥션 수 spring.datasource.hikari.maximum-pool-size= 10 : 최대 풀 사이즈 spring.datasource.hikari.idle-timeout=10000 : 최대 유휴(대기)시간 spring.datasource.hikari.max-lifetime= 1000 : 종료 후 최대 연결 시간 spring.datasource.hikari.auto-commit =true : 자동 커밋 기본설정
데이터 타입 - 가변문자 타입 MySQL(VARCHAR), 오라클(VARCHAR2) - 숫자 타입 MySQL(integer), 오라클(Number) 다른 함수명 - SQL표준(SUBSTRING()), 오라클(SUBSTR()) 페이징 처리 - MySQL(LIMIT), 오라클(ROWNUM
Hibernate- 현재 45개 데이터베이스 방언 지원. )
엔티티
엔티티 (사전) 독립체, 인간이 생각하는 개념 또는 정보의 세계에서는 의미있는 정보의 단위
엔티티 매니저 팩토리 - DB 갯수만큼 - 엔티티 매니저 팩토리는 스레드 세이프, 엔티티 매니저는 동시성 문제, 스레드간 공유 안됨. - 하는일 1. 에플리케이션에서 관리- 직접 생성, 종료 2. 컨테이너에서 관리 - JBoss EAP, 웹로직, TomEE와 같은 JEE 컨테이너
영속성 컨텍스트 - 엔티티를 영구 저장하는 환경. - 개념적, 엔티티 매니저 생성할 때 하나 만들어짐, 엔티티 매니저를 통해서 영속성 컨텍스트에 접근가능, 관리 - 기본적으로 하나의 엔티티 매니저에 하나의 영속성 컨텍스트 만듬.
* 엔티티매니저 팩토리 코드 public T find(Class entityClass, Object primaryKey); 먼저 1차 캐시에서 엔티티를 찾고 만약 찾는 엔티티가 1차 캐시에 없으면 데이터베이스에서 조회 한다. 존재하지 않으면 null 1차캐시 - 어플리케이션 수준의 캐시. 조회 -> 1차캐시없으면 데이터베이스 조회->조회 데이터로 엔티티 생성, 1차 캐시 저장-> 조회한 엔티티 반환 ==>동일성, 동등성 모두 같은이유 , Repeatable read 등급 트랜잭션 격리 수준을 제공
public T getReference(Class entityClass, Object primaryKey); 존재하지 않으면 EntityNotFoundException 쿼리를 바로 실행하지 않고 프록시 객체를 리턴, 프록시 객체는 최초 데이터가 필요한 시점에 select 쿼리를 실행. 세션 범위 밖에서 첫 실행시 ({}) getFiled 실행시 LazyInitializationException -no Session 발생
public void persist(Object entity); 쓰기지연(transactional write-behind) : 트랜젝션 커밋 직전까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 insert 쿼리를 모아둠.
@PersistenceContext EntityManager em; --JEE 관리하는 트랜젝션 참여.
엔티티 생명주기
엔티티 생명주기 비영속 new/transient : 영속성 컨텍스트와 전혀 관계가 없는 상태 , 객체만 생성했고 아직 저장안함. - Member member = new Member(); 영속 managed: 영속성 컨텍스트에 저장된 상태 - em.persist(member); - em.find() - jpql 사용 상태 준영속 detached : 영속성 컨텍스트에 저장되었다가 분리된 상태 - em.detach() - em.close(); - em.clear() ; 영속성 초기화 삭제 removed : 삭제된 상태 - em.remove(member);
영속성 컨텍스트 특징 1. 식별자 존재 2. 보통은 트랜젝션 커밋할때 데이터베이스 반영(flush) 3. 장점: 1차 캐시, 동일성 보장, 트랜잭션을 지원하는 쓰기 지연, 변경감지(update시 dirty checking), 지연로딩
플러시 영속성 컨텍스트의 변경 내용을 데이터베이스에 "동기화" 하는 작업. 변경감지동작, 영속성 컨텍스트에 있는 모든 엔티티 스냅샷과 비교, 수정된 엔티티를 찾는다. 수정쿼리 SQL 젖아소, 후에 데이터베이스 전송 호출 방법: 직접호출(em.flush()), 트랜잭션 커밋 시 플러시 자동호출, JPQL & Criteria 객체지향 쿼리 실행시 플러시 자동 호출 e.setFlushMode(FlushModeType.AUTO); FlushModeType.AUTO : 커밋이나 쿼리를 실행할 때 플러시(기본값) FlushModeType.COMMIT: 커밋할때만 플러시
준영속 영속->준영속 1차 캐시, 지연 SQL 저장소, 변경감지, 지연로딩, 해당 엔티티를 관리하기 위한 모든정보 제거. 식별값 가짐 em.detach() : 특정 한 엔티티 영속성 컨텍스트 관리하지마! em.clear(); : 해당 엔티티 영속성 컨텍스트 관리하지마! , 수정해도 DB 영향 없음 em.close() :개발자가 실제 사용하는경우 드뭄
병합 준영속-> 영속 em.merge(member); 새로운 영속 상태의 엔티티를 반환. cf) 영속성여부(엔티티관리여부) : em.contains(member)
비영속 병합 해당 엔티티가 없으면 생성해서 병합. 있으면 업데이트.
*context : 맥락, 문맥
엔티티 맵핑
@Entity 테이블과 매핑되는 기본 단위. - name : jpa에서 사용할 엔티티 이름. - 기본생성자 필수(public or protected) - final 클래스, enum, interface, inner 클래스에서 사용불가. - 저장할 필드에 final 사용하면안된다.
@Table 클래스가 어떤 테이블과 매핑되는지 설정 - name :매핑할 테이블이름 - catalog : catalog 기능있는 데이터베이스에서 매핑 - schema - uniqueConstraints : DDL 생성시 유니크 제약조건. uniqueConstraints={@UniqueConstraint(name="NAME_AGE_UNIQUE", columnNames={"NAME", "AGE"})} @Id 엔티티 식별자 - 직접할당 자바 기본형, 자바 래퍼형, String, java.util.Date, java.sql.Date, java.math.BigDecimal, java.math.BigInteger - IDENTITY 전략:자동 키생성 : 주로 MySQL,, PostgreSQL, SQL Server, DB2에서 사용. @GeneratedValue(strategy=GenerationType.IDENTITY) DB 식별 컬럼 사용해서 식별자 생성:persist() 저장 시점 insert 쿼리 실행, 쓰기지연 동작안함. spring.jpa.hibernate.use-new-id-generator-mappings =true - SEQUENCE 전략 : 데이터베이스 시퀀스 사용 : 오라클, PostgreSQL, DB2, H2 @SequenceGenerato(name="review_seq_gen", sequenceName="hotel_review_seq", allocationSize=1) @GeneratedValue(generator="review_seq_gen") persist() 저장 시점 시퀀스 추가 쿼리 실행-> 트랜젝션 commit 시 insert allocationSize 기본값 50 : 시퀀스 전략. 50개를 메모리에 미리 할당받아 호출수를 줄임. 단 두개 이상 jvm 을 사용하면 충돌 우려 allocationSize =1 사용하여 해결. - TABLE 키생성 테이블 사용 : @TableGenerator(name="idgen", table="id_gen", pkColumnName="entity", pkColumnValue="city", valueColumnName="nextid", initialValue=0, allocationSize=1) GenerateValue(generator="idgen") 1. id_gen테이블에서 식별자 구함. 레코드 존재 않을 때 insert 실행, 다음식별자 id_gen 반영 -AUTO전략 @GeneratedValue(strategy=GenerationType.AUTO) 오라클 sequence, mysql identity를 사용 * 자연키 : natural key, : 비즈니스에 의미가 있는 키 ex) 주민번호, 이메일, 전화번호 * 대리키 : surrogate key : 비즈니스와 관련없는 임의로 만들어진 키, 대체키,ex) 오라클 시퀀스, auto_increment, 키생성 테이블 사용. 대리키 권장
@Basic 보통 생략되어 사용, int, long, String과 같은 기본타입, 래퍼타입, BigInteger, BigDecimal, Calendar, Time, Timestamp, enum, 상기의 배열 @Timestamp java.util.Date 사용시 @Temporal(TemporalType.TIMESTAMP) java.sql.Timestamp , java.util.Date로 변환 DATE : java.sql.Date TIME : java.sql.Time TIMESTAMP : java.sql.Timestamp : Mysql : datetime, H2,오라클, postgreSQL : timestamp 하이버 네이트 5.2 LocalDateTime 사용
@Column 없으면 타입명과 컬럼값 같음 - name - nullable=false - length=10 - insertable=false :면 id값 빼고 insert - updatable=false : 면 update 대상 제외 -table 하나의 엔티티 두개이상 테이블 매핑. - unique -columnDefinition - precision, scale : BigDeciaml 타입에서 사용한다. BingInteger도 사용가능, precision 소숫점포함 전체 자릿수, scale 소수의 자릿수 아주 큰숫자, 정밀 한소수 다루어야 할때 사용.
@Enumerated(EnumType.STRING) STRING 설정안하면 기본타입으로 저장. @Lob 필드길이 제한 없음, CLOB: 필드 타입 문자 BLOB : 나머지
@Access(AccessType.PROPERTY) 필드 상단 프로퍼티 접근방식, get, set 메서드 통해서 접근 == @id 를 get 메소드 선언 과 같음 @Access(AccessType.FIELD) get 메서드 상단 필드 접근방식set 메서드를 사용하지 않음.== @id 를 필드에 선언과 같음 * 필드에 id 를 선언하고 메서드에 @Access 프로퍼티 선언 하면 동시사용 가능.
@transient transientprivate long timestamp = System.currentTimeMillis(); 사전 일시적인, 트랜션트 영속대상 제외
기본생성자 필수, public or protected
final class 불가. 프록시 객체를 생성 부락.
Serializable 인터페이스 캐시 구현기술 사용시. 필요
exclude-unlisted-classes true 시 자동추가 비활성화
cf) 필드에서만 쓸수있는게 아니라 get 메소드에 선언가능
트랜젝션
ACID : Atomic 원자성, Consistency 일관성, Isolation 격리성, Durability 지속성 Read Uncommited 커밋되지 않는 읽기 : 커밋안된 데이터 다른트렌젝션 update, insert, delete 읽기 Dirty reads : Rollback 시 정합성 깨짐 Read Commited 커밋된 읽기 : 다른 트랜젝션 update insert delete 읽기 Non-Repeatable read : 업데이트 영향으로 첫번째 조회 값과 두번째 조회값 다름 Repeatable Read 반복 읽기 : 다른 트랜젝션 insert, delete 읽기 Phantom read : insert, delete 영향으로 첫번째 조회 값과 두번째 조회가 있다없음 Serilization 직렬화 : 락을 걸어 트랜잭션 이용하는 부분 사용 못함. 병렬성 저하.
JPA 낙관적 락 : 트랜잭션 충돌이 거의 발생하지 않는다. 커밋 되는 시점에 충돌여부 알수있다. LockModeType.NONE : 커밋시 version정보 update 쿼리로 : 두번의 갱신문제 해결 > 조회 ~ 수정 트랜잭션 격리 LockModeType.Optimistic: 커밋시 version 정보를 select 쿼리로 보냄: dirty read, Non-Repeatable Read 해결 +스칼라 타입 으로 조회 시 소프트락 적용안됨 ?? 스칼라타입: 단하나, <->컴포지트 Optimistic.Force_increment : 커밋시 version 정보를 update 쿼리로 : 연관관계 엔티티 함께 버전 관리
JPA 비관적 락 : 타임아웃. PESSIMISTIC_WRITE PESSIMISTIC_FORCE_INCREMENT
@JoinColumn name : 매핑할 외래 키 이름 referencedColumnName :외래키 참조하는 대상 테이블 컬럼명 foreignKey : 외래키 제약조건. 테이블 생성시만 사용 그외 columne 속성과 같음
@ManyToOne : 다대일 관계 사용 optional : false : 항상 연관된 테이블 있음. fetch : 글로벌 패치 전략 @ManyToONe = FetchType.EAGER, @OneToMany=FetchType.LAZY cascade : 영속성 전의 기능 targetEntity : 연관된 엔티티 타입 정보 설정, 거의 사용안함. @OneToMany private List members; @OneToMany(targetEntity=Member.class) private List members;
단방향 회원 - 팀. 객체 그래프 탐색 : 참조를 통해서 연관관계를 탐색. ex) member.getTeam() 저장 , 수정 em.persist(team1) member1.setTeam(team1) em.persist(member1) 조회 member.getTeam() : 객체 그래프 탐색 삭제 Member member1 = em.find(Member.class, "member1"); member1.setTeam(null); ///1. 연관관계 모두 제거. em.remove(team) ///2. 해당 엔티티 삭제
양방향 연관관계의 주인은 테이블에 외래키가 있는곳. ** 양방향 연관관계의 주의점 : 객체 관점에서 양쪽방향에 모두 값을 입력해주는 것이 가장 안전. ** 무한루프 주의 toString 시 member, team 에서 서로 호출. Lombok 사용시 필히. em.persist(team1) member1.setTeam(team1) // 객체 , 실제 데이터 저장 team1.getMembers().add(member1) //객체 정보 저장 em.persiste(member1) +) public void setTeam(Team team){ if(this.team !=null) this.team.getMembers().remove(this); this.team = team; team.getMembers().add(this); } 조회 List<Member> members = team.getMembers();
cf) JPQL 단방향 연관관계 : 다대 일 String jpql = "select m from Member m join m.team t where t.name=:teamName"; List resultList = em.createQuery(jpql, Member.class).setParameter("teamName", "팀1").getResultList();
다중성
DB ERD
객체 단방향
객체 양방향
다대일 @ManyToOne
연관관계맵핑
@ManyToOne @JoinColumn(name="TEAM_ID") privae Team team; //cf) 0..1 : zero to one 0~1맵핑
@Entity @Inheritance(strategy=InheritanceType.JOIND) @DiscriminatorColumn(name="DTYPE") public abstract class Item{ @Id @GeneratedValue @Column(name="ITEM_ID") private Long id; //생략 }
@Entity @DiscriminatorValue("A") public class Album extends Item{ //생략 }
// 기본키 컬럼 재정의 @Entity @DiscriminatorValue("B") @PrimaryKeyJoinColumn(name="BOOK_ID") //ID 재정의 public class Book extends Item{ //생략 }
일반적으로 비추천. 구분컬럼 미사용, 티에블 통합 쿼리 어려움. orm db 양쪽에서 모두 비추 @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public abstract class Item{ 하기 동일.
테이블 상관없이 특정정보 자식에게 상속 @MappedSuperclass
공통사용 매핑정보 모아줌 - ex) 등록일자, 수정일자, 등록자, 수정자. @MappedSuperclass public abstract class Item{
@IdClass
@IdClass : 데이터베이스에 가까움 @Entity @IdClass(PId.class) public class Parent{ @Id @Column(name="P_ID1") privae String id1;
@Id @Column(name="P_ID2") privae String id2;
// 생략 }
public class PId implements Serializable{ private String id1; private String id2; public PId(){} public ParentId(String id1, String id2){this.id1=id1; this.id2=id2;} @Override public boolean equals(Object o){...} @Override public int hashCode(){...} }
@EmbeddedId
@Entity public class Parent{
@EmbeddedId private PId id;
// 생략 }
@Embeddable public class PId implements Serializable{ @Column(name="P_ID1") private String id1; @Column(name="P_ID2") private String id2; public PId(){} public ParentId(String id1, String id2){this.id1=id1; this.id2=id2;} @Override public boolean equals(Object o){...} @Override public int hashCode(){...} }
** equeals, hashCode 구현 안하면 예상과 다른엔티티 조회되거나 엔티티를 찾을수없어짐. 비식별 고나계를 사용하고 long 타입 대리키 사용하는것 추천.
@IdClass (비식별)
데이터베이스에 가까움 @Entity @IdClass(PId.class) public class Parent{ @Id @Column(name="P_ID1") privae String id1; @Id @Column(name="P_ID2") privae String id2;
// 생략 }
public class PId implements Serializable{ private String id1; private String id2; public PId(){} public ParentId(String id1, String id2){this.id1=id1; this.id2=id2;} @Override public boolean equals(Object o){...} @Override public int hashCode(){...} }
@EmbeddedId (비식별)
객체지향적, JPQL 작성시 불리할수있다.
@Entity public class Parent{ @EmbeddedId private PId id;
// 생략 }
@Embeddable public class PId implements Serializable{ @Column(name="P_ID1") private String id1; @Column(name="P_ID2") private String id2; public PId(){} public ParentId(String id1, String id2){this.id1=id1; this.id2=id2;} @Override public boolean equals(Object o){...} @Override public int hashCode(){...} }
복합키는 @GenerateValue 사용불가
@IdClass (식별)
@Entity public class Parent{ @Id @Column(name="P_ID") privae String id; // 생략 }
public class ChidId impliments Serializable{ private String parent; private String childId;
//equals, hashcode }
@Entity @IdClass(ChildId.class) public class Child{ @Id @ManyToOne @JoinColumn(name="P_ID") privae Parent parent;
실제 사용 하는 시점(targer.getName() , member.getOrders().get(0))까지 데이터베이스 조회 미룸. 접근을 위임한 프록시 객체 반환. 이미 엔티티가 있으면 엔티티 반환. - 준영속시 에러 발생 LazyInitializationException - 연관관계 설정시 데이터 베이스 접근횟수 줄임. - PersistenceUnitUtil.isLoaded(entity); 프록시 인지 엔티티인지 확인.
요약 사물과 사물 사이 또는 사물과 인간 사이의 경계에서, 상호 간의 소통을 위해 만들어진 물리적 매개체나 프로토콜을 말한다. I/F로 축약하여 사용하기도 한다. 크게 ‘하드웨어 인터페이스’, ‘소프트웨어 인터페이스’ 그리고 ‘사용자 인터페이스’의 세 가지로 구분된다. 1) 하드웨어 인터페이스 컴퓨터 등 정보 기기의 하드웨어 간 통신을 위해서 존재하는 입출력 포트의 전기적 연결 장치인 커넥터(connector), 신호의 송수신 방법(프로토콜) 등을 말한다. 컴퓨터 관련 버스, 저장 장치 및 다양한 입출력 기기들 내에 존재하며, 주로 병렬 연결과 직렬 연결로 나뉘어진다. 컴퓨터 내부 장치나 구성 요소간의 상호 접속을 가능하게 하는 플러그, 커넥터, 카드 등이 하드웨어 인터페이스에 속한다. 하드웨어 인터페이스의 종류로는 USB(Universal Serial Bus)와 같은 직렬 커넥터, RS-232C와 같은 통신용 직렬 인터페이스, SCSI와 같은 병렬 인터페이스 장치 등이 있다. 2) 소프트웨어 인터페이스소프트웨어 간의 통신을 위해 메시지를 전달하는 방식 등이 결정된 것으로, 다양한 레벨에서 다양한 종류의 인터페이스가 존재한다. 운영체제(OS)와 하드웨어들 사이의 인터페이스, 운영체제와 응용 프로그램이 상호 작용하는 인터페이스, 객체 지향 프로그래밍에서 응용 내의 객체들이 서로 상호 작용할 수 있도록 하는 메소드 등이 소프트웨어 인터페이스에 속한다. 소프트웨어 설계 시 자원에 대한 접근을 잘 정의된 진입점(entry point), 즉 인터페이스를 통해서만 가능하도록 함으로써 시스템 자원에 대한 기능성과 안정성을 제공할 수 있다. 3) 사용자 인터페이스 기계, 특히 컴퓨터와 사용자(인간) 사이의 상호 작용과 정보 교환을 위한 인터페이스로 컴퓨터 상호 작용(HCI : human-computer interaction) 혹은 인간-기계 인터페이스(MMI : man-machine interface)라고도 한다. 사용자 인터페이스는 크게 입력과 출력의 두 가지 방법을 제공한다. 입력은 사용자가 시스템을 조작하는 방법을 정의하고, 출력은 사용자가 조작에 따라 시스템이 생성한 결과를 제시하는 수단이다. 좋은 사용자 인터페이스는 심리학과 생리학에 기반하여 사용자가 필요한 요소를 쉽게 찾고 사용하며 정확한 결과를 손쉽게 얻어낼 수 있도록 설계해야 한다. 컴퓨터에서의 사용자 인터페이스는 프로그램이 사용자에게 표시되는 그래픽, 텍스트, 음성 정보와 사용자가 프로그램을 제어하는 사용자 제어 시퀀스에 대한 상호 작용 방법을 모두 포함한다. 사용자 인터페이스 종류로는 그래픽 사용자 인터페이스(GUI : graphical user interface), 웹 사용자 인터페이스(WUI : web user interface), 명령 줄 인터페이스(CLI : command-line interface), 배치 인터페이스(batch interface), 터치 인터페이스(touchinterface), 음성 사용자 인터페이스 등이 있다. [네이버 지식백과] 인터페이스 [interface] (두산백과)https://terms.naver.com/entry.nhn?docId=2837557&cid=40942&categoryId=32828
1 일. 집중력과 상상력나는 내가 원하는 것을 끌어당긴다. 인간은 오직 약한 주의력과 상상력 부족에 의해서 만 제한됩니다. (You are only Limited by Weakness of Attention and Poverty Of Imagination!) 원하는 것을 생각하고, 감정적으로 몰두하고 집중 할 수 있다면 그것을 가질 수 있다. 상상력은 무엇이든 창조 할 수 있고 어디든지 데려갈 것이다. 원하는 것을 지속적으로 생각하면 도달할 수 있다 .
1. 이타심과 이기심 : 내가 가진 것만 줄수 있다. : 너의 힘의 기반이 어디 있는지, 너의 개성(personality)에 집중해서 세상에 무엇을 할수 있을지 고민해야 한다. : 자신을 가득채워야 한다. 스스로 존중해야 한다. 그 시작에는 이타심이 없어야 자신을, 온전한 자아를 세상에 제공할 수 있다. : 타인에게 묻는 것은 어떻게 기대에 부합할수 있는지 알고싶기 때문이다. : 내가 지금 여기 있는것 자체가 기적이고 영광(honor)스러워 하는것.
2. 세상에 실수라는 것이 없습니다. 꺼름직한 기분은 방향을 바꾸라는 이야기, 스스로에게 방향을 물어볼 것 내가 충만하게 넘쳐야 타인에게 줄 수가 있다 자신을 가꾸고 돌봐야 한다. 지금 현재 존재한다는 것난 이 세상에 꼭 필요한 존재야 어린 자신에게 해주고 싶은말은? 긴장을 푸세요. 안심하세요. 괜찮을 것에요 이 도전을 이겨내는 방법은 가만히 앉아서 자신에게 묻는것. 다음 올바른 움직임은 무엇인가.
"자신을 가꾸고 돌봐야 한다. "란 말이 나에게 그렇게 도 먼 이야기 었나보다. 난 분명히 몇번이나 들었지만 내 귀에 들리지 않았다. 안다고 생각했었으니까. 내가 멋지다고 생각하는 사람들이 공통으로 말한 것이 있는데 그것은 상을 받은 것보다 본연의 일을 지속 할 수 있는 데 도움이 될것같아 기쁘다는 내용이었다. 지금 사는 대로 계속 사는 것이 상으로 느껴 진다면 그것이 잘 살고 있는 삶인 것 같다.
나는 나 자신을 가꾸고 돌보고 가득 채운다. 내가 지금 여기 있는 것 자체가 영광스러운 일이다.
내 인생의 가장 큰 꿈은 내가 하는 사업으로 지방 지역 경제를 유지할 수 있게 기여하는 것이다. 이유는 알 수 없지만 한 섬이 있고 그 섬 전체를 총괄하는 사업을 하는 이미지가 내 머릿속에 항상 그려져 있었다. 정말 할 수 있는 건지 가능 한 건지 왜 생각이 나는지 도무지 알 수가 없다. 단순 하게 생각해도 사업 적으로 이점이 별로 안 보이는데 말이다. 그걸 이루려면 완전히 다른 차원의 어떤 사업을 내가 만든다는 뜻이고, 지구 수면이 올라가는 시점에서 이보다 더 큰 위험성이 올라가는 사업이 있을까? 잠깐의 공상.
지구에 도움이 되는 사업체를 운영한다. 동시에 나에게는 시간이 많아 가족과도 많은 시간을 보낸다. 그리고 계속 공부를 하면서 새로운 사업을 만든다. 내가 운영하는 사업체 건물을 소유하고 있다. 3층은 사무실로 쓰고 있고, 1층은 재활용과 관련된 매장이 운영되고 있다. 일회용품을 쓰지 않는 마트와 그 외 "자연 진화" 제품을 팔고 있다. 3시간 정도 내 업무를 하고 나면 집에서 아이들과 놀 수 있다.
내가 세상에 나누고 싶은 것은 기본적인 지식이다. 나를 사랑하는 법 사람들과 같이 사는 법. 이 부분에 막대한 돈을 써서 알게 된 나는 이 부분이 세상의 가장 큰 불공평이라고 생각했다. 이건 시작의 문제가 아니라 성장 동력의 문제였기 때문에. 엄청난 빈부격차인 것이다. 그리고 집이 필요한 미혼모 가정에게, 가정 폭력 피해자들에게 집을 제공하는 기여를 하고 싶다.
1. 자신의 삶을 주도하라. - 자극과 반응 사이에는 선택할수 있는 자유가 있다. 2. 끝을 생각하며 시작하라. - 자기사명서. 3. 소중한 것을 먼저하라. - 긴급하고 중요한 것을 먼저하라. 4. WIN-WIN을 생각하라. 5. 먼저 이해하고 다음에 이해시켜라. - 공감의 경청 후 원하는 바를 말해야 한다. 6. 시너지를 내라. - 촉매제는 신뢰 . 7. 끊임없이 쇄신하라. - 신체적, 영적, 정신적(지적), 사회적(감정적)
7 일. 오늘 한 다섯까지와 앞으로 일어날 다섯가지에대한 감사일기를 써라 1. 실패를 지혜로바꾸세요. 실패는 하느님이 잘못된 방향으로 가고있다고 알려주는 것과같다실패는 경험일뿐이다 2. 오늘 한 다섯까지와 앞으로 일어날 다섯가지에대한 감사일기를 써라지금 감사하면 감사함이 온다3. 가장 원대한 기회를 그리세요.믿는대로 됩니다4. 본인의 힘을 근원에 연결한다면 여러분은 모든 일이 가능합니다.
14일. 미래를 그리고 만드는것 메타버스 - 몸소 체험 할 수 있게 해줌. 기술이 우리를 더 잘 표현하고 세상을 더 풍성하게 경험할 힘을 주었다. 텍스트 > 사진 > 비디오 , 데스크톱 > 웹 > 스마트폰 저희는(마크저커버그)는 메타버스가 모바일 인터넷의 후계자가 될 것이라고 믿습니다 제품을 만드는 것으로는 부족하다. 생태계를 만드는 것 또한 도와야 한다.
15 일. 소비를 통제하고 단순하게 사는 것 모차르트의 불행 1. 모차르트는 본인의 수입보다 훨씬 더 많은 돈을 소비했다. 2. 모차르트는 질투와 원망만 하며 살았다. 모든 사람이 모든 것을 배울 수는 없다. 행동하세요. 드문 기회가 다가왔을 때 놓치지 마세요. 소비를 통제하고 단순하게 사는 것이 부자의 비밀이다. 우리는 항상 수입보다 적게 쓰고 투자했다. 그런 다음 오래 살면, 바로 부자가 된다. 어려운 일들을 잘 피하고 쉬운 일들을 찾아냈기에 성공했다.
16일. 파워포지션을 하고 자랑스러워 하는 순간을 집중하세요. 예전부터 하던 걸 똑같이 해서는 새로운 결과를 얻지 못한다는 것을 우리 모두는 알고 있다. 사람이 변화하지 않는 이유는 걱정하면서 새로운 행동을 하지 않게 되기 때문이다. 결과 바꾸기 < 행동 바꾸기 < 감정 상태 바꾸기
감정상태 바꾸기 1. "파워포지션"- 몸 상태를 바꾼다. - 어깨를 쭉 펴고, 호흡 패턴을 바꾸고, 더 빠른 제스처를 취하고, 더 빨리 말하면, ... 우린 근본적으로 다른 행동을 취하게 됩니다. (어깨 펴고 손은 허리 위에 2분 동안 숨을 깊게 쉰다. ) 2. 당신이 자랑스러워 하는 그 순간에 집중하세요. 당신의 인생에서 당신이 자랑스러워하는 것은 무엇입니까. 자랑스러울 때 숨을 어떻게 쉬나요? 미소 짓고 환호하세요 .
18 일. 문제해결 능력 문제 자체를 가르치는것이 중요하다. 학교를 만든 이유. 첫째, 학생들의 적성과 재능에 맞춘 교육이 필요하다. 둘째, 문제해결 능력 문제 자체를 가르치는 것이 중요하다. 엔진 작동방식 예전 : 드라이버, 렌치 사용법을 알려줌. 원하는것 : 엔진을 열려고 하는데 뭐가 필요할까? 드라이버가 필요한거야 그게 드라이버 용도야. 도구의 관련성이 명백해진다.
19 일. 부자들은 돈을 벌 준비가 되어있다. 부자들은 준비되어 있다. Money always flows to those who have the money magnet 3단계 공식 첫째, 당신이 어떤 속도로 가고 싶은가? - 하루에 몇 시간? 일주일에 몇일? 둘째, 얼마 동안 그 속도를 유지하겠는가? - 1년, 2년? 셋째, 집중 노력. - 시작은, 항상 무언가를 판매해야 한다는 것이고, 그다음은 인재 영입, 그 다음 성장, 그 다음 돈을 쌓는 것. 최악의 100일 > 그 날이 실패하는 날이며 성공하는 날이다. 시장의 40% 새로 찍은 돈. 그 돈이 어디로 가는가? -가난한 사람은 가난해지고 부자는 더욱 부자가 중간 층의 준비된 사람은 더 부유해졌다.
20 일 인간관계 모두가 당신을 좋아한다고 생각하세요. 당신의 진짜 모습을 보여주세요. 1. 진실성 : 당신이 세상에서 그 누구보다 잘할 수 있는 것은 나 답게 행동하는 것. 가치를 높이는 것은 나 다움을 점점 알아가는 과정. 내가 누구인지, 어떤 바이브(분위기, 낌새, 느낌)를 가졌는지. 2. 사회적 지능 우정, 연애, 비즈니스에서 기초적인 사회적 지능이 없는 사람을 만난다. 그 사람을 신뢰하거나 의지할 수 있을까요? 3. 압박을 견디면서 여전히 있는 그대로의 모습을 보여주는 사람이 가장 큰 가치를 가진 사람이다 이 사람은 스스로가 단단한 사람이구나. 4. 가치를 이용해서 소통. "프레임" 프레임은 세상을 바라보는 방식. 진짜 강한 프레임은 자신에 대해 숙달하는 것으로 시작됩니다. 인정이나 동의 받고 싶어하는 태도를 근절하는 것이 시작. 누군가를 만날 때, 모두가 당신의 편이며 당신을 좋아한다고 생각하세요. 아무것도 증명할 필요도 없어요. 경계하지 마세요. 당신의 진짜 모습을 보여주세요. 그 모습과 현실만 신경 쓰세요. 상대방에게 이미지를 투영하지 마세요.
21 일. Stay hungry. Stay foolish. 바보처럼 불가능에 도전하라. 매일을 마지막처럼 산다면, 어느날에는 당신은 가장 옳은 사람이 될 것이다. 오늘이 내 인생의 마지막 날이라면, 오늘 내가 하려고 하는 일을 하고 싶을까? You are already naked. 이미 잃을 것이 없습니다. 죽은은 최고의 발명품이다. 죽음은 새로운 것을 위해 길을 터주고, 오래된 것을 소멸시킨다. 다른 사람들의 삶을 사느라 시간을 쓰지 마세요. 지구대백과 최종화. Stay hungry. Stay foolish. 바보처럼 불가능에 도전하라.
22 일. 변화(NFT) 와 투자 NFT : Non Fungible Token. 대체 불가능한 토큰 Fungible : 가장 대표적인 예는 현금. 같은가치 교환가능 non-fungible : 대체불가능 , 다른 자산과 동일하게 대체될수 없는 자산. 예는 부동산, 예술품 토큰 : 블록 체인에 저장된 디지털 인증서. 암호화폐가 공공거래장부에 저장되는 것과 똑같은 방식. 구입이유 : 1. 검증가능한 소유권, 2. 수집(컬렉션) 3. 사회적 지위 리스크는 크다.
세상은 계속 변하고 시각도 계속 변한다. 선택권을 가지고 있다는 것은 Mindfulness(마음챙김) 와 관련있는것으로 보인다. 이 선택권은 건강, 행복, 자신감을 통제하는데 있어 매우 강력하다. <-> Mindlessness(마음놓침) : 생각 없이 자동적으로 행동. 새로운 것을 알아차리는 행위가 참여의 느낌으로 이어짐. 마음 챙김 상태가 증가하면 자신감, 행복, 건강, 수명이 증가한다. 책 : 마음의시계-시간을 거꾸로 돌리는 매혹적인 심리실험.
중요한 결과에 스스로 영향력을 끼칠 수 있다는 믿음, 완벽하게 예측 할수 없다는 것을 알아야. 불확실성의 힘을 인식하고 통제가 아닌 이용을해야한다. 우리의 통제권은 과거에 발생한 사건에 대해 대응하고 행동하는 방식 뿐. 우리가 해야 할 일은 스스로 생각하는 것보다 더 유능하다는것을 깨닫는것.
24 일. 완벽한 아침루틴 1. 7~8시간 수면 후 아침맞기 2. 침대 정리하기 3. 몸을 움직이기-자신감, 힘, 정화 4. 명상- 정화, 생각정리, 감사함 5. 나의 비전은 무엇인가. 그것을 위해 오늘 할일은 무엇인가? 나의 비전을 위해 오늘 아니요/예 라고 말할수 있는가. 비전, 사명, 목표, 의도를 통제한다.
나는 감사한 마음으로 행복하고 건강하며 성취감과 사명감이있고 목적 지향적인 삶을 살고 있습니다.
25 일. 매 순간 마음이 방향을 바꾸고 있다는게 문제다. 전체 시스템(육체, 감정, 정신, 에너지)을 한 방향으로 조직하면 원하는 것을 모두 이룰 수 있다. 그렇지 않으면 자기파괴적이 될 수 있다. 만약 불행하다면 원하는 대로 인생이 진행되지 않기때문. 생각대로 흘러간다면 행복하다. 그러기 위해 얼마나 집중했는가, 안정성이 있는가 울림이 있는가. 질문해보라.
26 일. 주파수를 높이고(한가지에 집중) 자기가 되고싶은 사람처럼 생각, 과거를 차단 한가지에 집중할 때 높은 주파수에 있게된다. 미국 케네디 대통령의 결정 : 우리는 10년 안에 달에 가서 다른것을 하기로 선택합니다. 그것이 쉽기 때문이 아니라 그들은 어렵기 때문입니다. 현재 결과가 반복되게 두고 있고 그게 현재 계속되는 결과. 상위능력 - 의지, 확고한 결정. 주파수를 높이고 자기가 되고싶은 사람처럼 생각하고 과거를 차단하고 현실을 맛보게 된다. 원하는 대로 가세요. 확실히 가치가 있습니다.
27 일. 100만장자의 97%는 자신의 운명을 스스로 통제한다고 생각(남탓X) 부자가 되려면 사고방식(mindset)이 중요합니다. 100만장자의 97%는 자신의 운명을 스스로 통제한다고 생각합니다. 무언가 성취를 못 했을 때, 방해가 될 때면 남을 탓하고 싶어진다. 100만장자의 94%는 버는 것보다 적게 쓰며 삽니다. 빛의 이자는 패널티고 투자의 이자는 보상이다. 부채에서 벗어나 자신에게 보상하기 위해 돈을 투자하고 성장하라. 반복되는 실수는 실수가 아니라 선택이다.
우리삶에는 4명의 사람이 필요하다. 멘토 - 성공자이며 가이드 해 줄 수 있는 사람. 코치 - 독려해줄 사람. 목표 달성까지 귀찮게 하며 추진하는 사람. 치어리더 - 지지자. 믿어주는 사람. 지금까지와 상관없이 믿어줌. 친구 - 생각을 모두 솔직하게 털어놓을 수 있는 사람. 솔직하게 대해도 원망하지 않는 친구. 이 4명의 사람을 찾는 것 뿐만 아니라 그 네사람중 한명이 되어주는 것이 중요하다. 혼란을 겪는 것만으로도 전달자(messenger)가 될수 있다. 혼란을 겪으면서 배우기 때문이다. 인생은 혼자살지 않는다.
사람들이 할수없다고 말하는 것에 대해 신경쓰자 마세요. 마음이 가는것이 무엇이 있는가 그것을 시작하라.
하지 말아야 할것을 분명하게 하라. 불필요한 위험을 감수하기 위해. 1. 빚을 지지 않는다.
28 일. 우리보다 모범이 되는 사람을 찾으라 중요한 것은 세계 최초로 최고의 비즈니스 아이디어를 얻었는지 여부가 아니다. 중요한건 고객에게 무엇을 제공할 수 있는지, 동료들에게 특별이 무엇을 가져올수 있는지, 스스로 배우는 것이다. 그렇게 하려면 날마다 고객을 기쁘게 하고 싶은 진정한 열망이 중요하다는 교육이 필요합니다. 고객을 기쁘게 하고 성공하지 못한 기업은 단한번도 본적이 없습니다. 자신이 정당한 대우를 받고 있지 않다거나 자신의 견해가 적절하게 고려되지 않는다고 느끼는 사람들을 통해 일을 할수는 없습니다. 그래서 우리는 다른 사람들을 통해 자신을 확장시키는 방법을 반드시 배워야 한다.
나보다 더 나은 사람들과 어울리는 것이 중요하다. 우리가 어울리는 사람들의 방향으로 움직일 것이기 때문이다. 우리가 더 잘 행동한다면, 우리의 인생도 잘 될것이다. 우리보다 모범이 되는 사람을 찾으라. 스스로 축소해서 맞춰야 할 것같은 사람들 말고.
30 일. 상대방에게 무언가를 요구하기 전에, 먼저 상대에게 가치있는것을 준다. 13개의 사업을 실패했다. 제가 말하는"성공"하기 전에 상대방에게 무언가를 요구하기 전에, 먼저 상대에게 가치있는것을 준다. 사업철학은 어떻게 하면 상대가 하는 일에 내가 가치를 더할수 있는지 생각하는것. 당신이 하고 있는 일중에 가치를 더 할수있는 가장 중요한 프로젝트는 무엇인가? 대부분의 사람들은 성공의 측면에서 자신의 역할을 과대평가한다. 기회(수단)를 찾는것이 10배는 더 중요하다. 먼저 적절한 사람이 되어야한다. 그리고 적절한 시기에, 적절한 장소에 있어야 한다.
31 일. 90일 동안 업무를 시작하고 가장 첫 90분을 종사하고 있는 업계에 큰 획을 그을 수 있을 만한 딱 한가지(1) 중요한 기회에 투자하십시오. 생산성을 100배 높이는 방법. 1. 산만함에 중독되면 창의적인 작품은 결코 탄생할 수 없다. 2. 우리는 타고난 지능보다 집중력이 더 가치있는 세상에 살고 있다.
5%의 성과를 내고 싶다면 5%의 사람들처럼 생각하고 생산하고 행동해야 합니다. 창의성, 생산성 에 집중하는 사람은 최고의 시간을 산만함에 중독된채 흘려보내지 않습니다.
1. THE 90/90/1 RULE : 내일부터 다음 90일 동안 업무를 시작하고 가장 첫 90분을 종사하고 있는 업계에 큰 획을 그을 수 있을 만한 딱 한가지(1) 중요한 기회에 투자하십시오. 2. 완전몰입 보호막 : 중요한 시간동안 타인이 당산에게 접근하기 어렵도록 셋팅. 3. 또래 집단을 신중하게 선택하라 : 행동개선의 가장 좋은 방법은 도달하고 싶은 수준에 이미 도달한 또래 집단이나 커뮤니티와 어울리는것. 무의식적으로 대부분의 시간을 함께 보내는 사람들의 행동을 따라한다. 창의적인날 - 전자기기를 사용하지 않는날. 최고의 결과를 만들어내고 최고의 아이디어를 얻을 수 있는 공간으로 활용 감정전염 : 피해자 주변에 있으면 피해자처럼 행동. 4. 학습된 미니멀리즘 : 천재성의 비결은 복잡성이 아니라 단순함에 있다. 최고 생산성의 비결 중 하나는 소수의 영역에서 세계 정상이 되는것에 초집중하는것. 일상에서 소수의 우선순위에 반드시 집중하십시오.
1. 내가 이 문제와 개인적으로 관련있는가? > 진짜 해결책인지 알수 있다. >지속력을줌.
2. 내가 이문제를 해결할 자격이 있는가? >다른이들은 문제를 이해하지 못하지만 자신은 이해하고있다. > 문제를 해결하는 자신만의 방법이 있다. + 과거에 해결하려고 했던 사람들을 조사하면됨.
3. MVP : 최소 기능 제품. Minimum Viable Product 사용자들이 문제를 해결하는 것을 도와줄 초기 제품 초기제품과 사랑에 빠지지 말것. 문제를 해결하지 못할가능성이크다. 형편없이 해결할수도 있다. 빠르게 초기 제품을 만들어라. > 해결하고자 하는 문제와 사랑에 빠져라. > 고객과 사랑에 빠져라. > 제품은 언제든 변경가능한 요소.
데이터의 집합, 컴퓨터 안에 기록된 모든것 - 계층형 데이터 베이스 ; 역사가 오래된 DBMS ex) 파일 시스템 , 현재 DBMS로 채택되는 경우는 많지 않음. - 관계형 데이터 베이스 : 관계대수라는 것에 착안하여 고안한 데이터 베이스. - 객체지향 데이터 베이스 : JAVA, C++ 가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는것. - XML 데이터베이스 : XMl 형식으로 데이터 저장, XQuery라는 전용 명령어 사용. - 키-밸류 스토어 KVS : NoSQL 이라는 슬로건으로부터 생겨난 데이터 베이스. 열지향 데이터베이스. ex) 연상배열(=결합성배열 =맵= 딕셔너리), 해시 테이블.
DBMS
Database Managemet System 생산성, 기능성, 신뢰성
SQL
IBM 개발한 SEQUEL 관계형 데이터베이스 조작용 언어를 기반으로 만들어짐.
DML : Data Manipulation Language 데이터 추가, 삭제, 갱신 DDL : Data Definition Language 데이터 정의, 데이터베이스 객체를 만들거나 삭제 DCL : Data Control Language : 트랜젝션 제어어 외
데이터베이스 제품
Oracle DB2 : IBM SQL SERVER PostgreSQL MySQL SQLite
SQL 방언존재
데이터베이스 서버
클라이언트/서버모델.
테이블 구조
DESC 테이블명; 자료형 INTEGER 형 CHAR 형 VARCHAR형 * 고정과 가변형 DATE형 TIME 형
검색조건
select where "=" "<>" 문자열상수 리터럴 : 자료형에 맞게 표기된 상수값. ex) 'ABC' ISNULL 비교연산자
AND, OR, NOT : OR 보다 AND 가 우선순위가 높음. LIKE : 메타문자 '%', : 문자가 없거나 하나 이상의 어떤값이 와도 됨. '_' : 하나의 문자에 어떤값이 와도 됨. '\' : 이스캐이프 처리. '''' : 이스케이프 처리. " ' " 문자는 2개 연속기술.
Order by : Null 은 가장 작은 값 취급 , order by price* quantity desc << 연산가능. desc asc : Order by a asc, b desc; limit 행수 offset 시작행 ex) limit 3 offset2 앞에 2행 제외하고 3개 rownum
조회 순서 FROM > ON>JOIN>WHERE>GROUP BY>HAVING>SELECT
수치연산
+ - * / % MOD
연산순서 * / % > + -
별명 Alias
AS '별명' : ASCII 문자 이외의 것. AS "별명"
Null
null +1 , 1+null, 2*null, 1/null .>> 모두 null
함수
MOD(10,3) -> 1 round truncate
문자열연산
'ABC' || '1234' => 'ABC1234' + : SQL Server || : Oracle, DB2, PostgreSQL CONCAT : Mysql
Substring Trim
문자세트 ex) EUC-KR or UTF-8 EUC-KR ASCII 문자1바이트, 한글 2바이트 UTF-8 ASCII 문자 1바이트 한글 3바이트.
insert into 테이블(열...) values( 값...); null, default delete from 테이블명 where 조건식. update 테이블명 set 열=값 ... where 조건식 ... Oracle은 set순서 상관없고 mysql은 영향있음.
물리 삭제 : 실제 삭제 논리 삭제 : 삭제 플래그
집계함수
count, sum, avg, min, max,
distinct count(*) 불가. : count 가 먼저 계산됨. count(distinct name)
WHERE > GROUP BY > HAVING >SELECT > ORDER by Having : 검색한뒤 그룹화 cf) having count(name)=1 200쪽부터 보기
DBMS 아키텍처
1. SQL 구문입력
웹 or 애플리케이션 or SQL 인터페이스 -> SQL 구문
2. 상호연계 (RDBMS)
1. 쿼리 평가엔진
플랜 실행 기능, 파서, 연산평가 기능, 옵티마이저
SQL 구문 분석, 실행계획(어떤순서 기억장치 데이터 접근 결정)
2. 접근 메서드
->트랜젝션메니저
┓ ┿>리커버리 메니저 ┘
실행계획에 기반을 둬서 데이터에 접근
3. 버퍼 메니저
->락메니저
버퍼 용도로 사용하는 메모리 영역 디스크 용량 매니저와 연동작동
4. 디스크 용량 매니저
동시 실행제어
어떻게 데이터를 저장할것인가
트랜젝션 메니저
각각의 처리 트랜젝션으로 관리
락메니저
대기시킴
리커버리 매니저
장애를 대비해 백업, 복구를 수행
3.참조
인덱스파일 -> 데이터 파일
: 시스템 카탈로그
Trade-off 어느것을 얻으려면 반드시 다른 것을 희생하여야 하는 경제 관계
Query : 질의 좁은의미 select 구문
DBMS 와 버퍼
기억 장치의 계층
1차 기억장치 - 레지스트 메모리
2차 기억장치 -HDD, CD, DVD, 플레시메모리
3차 기억장치 테이프
1차일수록 비쌈, 고가, 접근속도 빠름
DBMS 기억장치
하드디스크, 메모리, 버퍼를 활용한 속도 향상 버퍼, 캐시 : 성능향상을 목적으로 데이터 저장 메모리 cf) 매우 적은 양의 데이터에만 접근하는 SQL 구문은 저장소 I/O 보다 CPU 연산에 많은시간을씀
데이터 캐시
초기값 128MB
버퍼캐시(ORACLE), 버퍼풀(Mysql) 초깃값: 128MB(Mysql)
SELECT 구문에서 버퍼에서 데이터 있으면 그것 사용.
로그 버퍼
초기값 64KB
innodb_log_buffer_size 16777216 초깃값: 8MB(Mysql)
갱신처리(commit)시 로그버퍼에 변경정보 보내고 디스크 변경 >> 성능 보완, 메모리 휘발성 보안
로그
buffer 완충제,
RDBMS
레코드 필드 테이블 인덱스 뷰 프로시저 함수 제약사항
로, 행, 튜플 컬럼, 열, 어트리뷰트 릴레이션 키-필드만 갖고 있는 테이블에 대한 동작속도 높여주는 자료구조 여러 테이블, 뷰의 데이터를 조합하여 만듬, 테이블 아닌 테이블처럼 보여줌 프로세스를 절차적으로 기술 CREATE OR REPLACE PROCEDURE 특정 계산 수행, 반드시 리턴값 하나 존재, CREATE OR REPLACE FUNCTION 무결성 보장하기 위한 데이터베이스 객체중하나.
무결성 제약조건
데이터 정확성, 일관성
일관성, 정확성 보장위해 저장, 삭제, 수정등을 제약하기 위한 조건. 개체 무결성 : 기본키는 null, 중복값 불가 참조 무결성 : null 이거나 참조하는 릴레이션 기본키와 동일 도메인 무결성 : 속성값은 정의된 도메인값 ex) 남, 여 만 넣을수있는 조건 고유 무결성: 고유값 조건이 주어지면 같은값 없어야 Null무결성 : not null 조건 키 무결성 : 최소 테이블당 한개 이상의 키
쿼리문 종류
DDL DML DCL TCL
데이터 정의 어, DB 오브젝트 생성, 삭제 변경 ex) create 데이터 조작 어, DB 조회, 삽입, 삭제, 변경 ex)select 데이터 제어 어, 사용자 권한 관리 ex) grant 트랜젝션 제어어 ex) commit, rollback..
루트 글 크기 : 일반적으로 16px $font-family-base, $font-size-base 및 $line-height-base 속성을 body 에 적용 $link-color를 통해 전역 링크 색상을 설정하고 :hover에만 링크 밑줄을 적용합니다. $body-bg를 사용하여 <body>의 배경색을 설정합니다(기본값은 #fff). 전역 변수는 _variables.scss에서 정의. rem에 $font-size-base를 설정필요
0. 2000줄 보다 긴 파일은 피할것. Java Source File Example 참고. 1. 각 Java 소스 파일에는 단일 공용 클래스, 인터페이스 포함, 공개 클래스는 파일의 첫 번째 클래스 또는 인터페이스. Java 소스 파일 의 순서. - 주석시작(Beginning Comments) - 패키지 및 가져오기 문(Package and Import statements) - 클래스 및 인터페이스 선언(Class and Interface Declaration)
1. 주석시작 : Beginning Comments
모든 소스파일은 c-style 주석으로 시작하고, 클래스이름, 버전, 날짜, copyright 작성 /* * Classname * Version information * Date * Copyright notice */
주석이 없는 첫번째 라인 package java.aws; import java.awt.peer.CanvasPeer;
3. Class, Interface 선언
1. doc 작성은 /** */ 2. class or interface 문구작성 3. class or interface 구현 주석은 /* */ 4. class (static) 변수 작성 : 작성순서 : public > protected >(default) > private 5. 인스턴스변수( Instance variables) : 작성순서 : public > protected >(default) > private 6. 생성자 7. 메소드 : 범위 접근성이 아닌, 기능별 그룹화(개인클래스 매서드는 두개의 공용 인스턴스 메서드 사이에 있을수 있음) 8.
4. 들여쓰기(Indentation)
4개의 공백을 들여쓰기 단위로 사용, 정확한 구성(space vs tabs)은 지정되지 않음, 탭은 8칸마다 설정
1. 라인 길이
터미널에서 80자 보다 긴 줄은 잘 처리 되지않음으로 피하세요. document 사용시 70자를 넘기지 않게 작성
2. 줄바꿈
표현식이 한 줄에 맞지 않으면 다음 일반원칙을 따름. 1. 쉼표(,) 뒤에 엔터 ~~~(String a, String b) 2. 높은레벨과 낮은 레벨에서 줄바꿈이 필요하면 높은레벨에서 줄바꿈 var = method1( a , method2(c, d)); 3. 연산자(operator) 앞에서 줄바꿈 4. 같은 레벨의 새로운 시작은 이전줄의 같은 레벨에서 줄바꿈 sum = a +~~~ + q +r+~ ; sum = a +~~~ + q +r+~ ; // 피할 것. 5. 위의 규칙으로 코드가 혼란스럽거나 오른쪽 여백에 대해 눌러진 코드가 발생하면 대신 8칸 들여쓰기 하세요. public static synchronized longNameMehhodNameLongLong(int a, int bLongNamelonglonglonglong, int cLongNamelonglonglonglong, int d) 6. 8 칸 들여쓰기 규칙이 보통쓰이지만 내용을 인식하기 어려운경우 4칸을 더 들여쓰세요. if ( ( alongLongLongLong && blongLongLongLong) || ( clongLongLongLong && dlongLongLongLong) || ( elongLongLongLong && flongLongLongLong) ) { contentDo(); }
7. 3항연산자(ternary expressions) 정렬 a = (aLongLongLong) ? b : c; a = (aLongLongLong) ? b : c; a = (aLongLongLong) ? b : c;
5. 주석(Comments)
/*...*/ : 구현주석(implementation comments) : C++ 에서 볼수있는주석. : 코드 주석처리, 특정 구현에 대한 주석을 작성하기 위함 /**...*/ : 문서주석(documentation comments) : java 전용, javadoc 도구를 사용하여 HTML 파일로 추출가능
1. 주석은 코드의 개요를 제공하고, 코드 자체에서 쉽게 사용할 수 없는 추가 정보를 제공하는데 사용해야 합니다. 2. 설명에는 프로그램을 읽고 이해하는 데 관련된 정보만 포함되야 합니다. (해당 패키지가 어떻게 빌드되었는지, 어떤디렉토리에 있는지에 대한 정보 주석포함 안됨. ) 3. 애매한코드(nontrivial or nonobvious) 에대한 주석은 적절하지만, 명확한 코드에는 작성하지 않습니다. ( 중복된 내용 발생) 4. 주석을 추가해야 하는경우 코드를 다시 작성해서 명확하게 하는것이 좋습니다. 5. 주석에 특수문자 백스페이스, 들여쓰기 줄바꿈(form-feed) 사용하지 말것 ex)\f, \b 6. 주석을 별표나 문자로 되어 있는 넓은 범위에 코드에 사용하지 말것 (해석 불분명 : Comments should not be enclosed in large boxes drawn with asterisks or other characters.)
Line feed (= New line = LF = 0x0A): 줄을 옮김 $) note\nbook note book Form feed (= FF = 0x0C) : 들여쓰기 줄바꿈 $)note\fbook note book https://itng.tistory.com/25 스페이스바 띄워쓰기 백스페이스 바
- 클래스, 인터페이스 최상위 클래스와 인터페이스는 들여쓰기가 되어 있지 않지만, 그 구성원은 들여쓰기. 첫번째 줄은 들여쓰지 않고 후행 1칸씩 들여쓰기. (별표 세로정렬위해)
- 생성자를 포함한 구성원. 첫번째 문서 줄에 4개의 공백, 그후 5개의 공백
문서화에 적합하지 않은 클래스, 인터페이스, 변수 또는 메서드에 대한 정보를 제공해야 하는 경우 바로 뒤에 구현블록 주석 혹은 한줄블록 주석 예를들어 클래스 구현에 대한 세부정보는 클래스 문 다음의 구현블록 주석에 들어가야 Java 는 문서 주석을 주석 뒤의 첫 번째 선언과 연관시키기 때문에 문서 주석은 메소드 또는 생성자 정의 블록 내부에서 위치해서는 안됩니다.
6 선언(Declarations)
1. 줄당 숫자
줄당 하나의 선언을 추천합니다. 주석을 권장 하기위해 int aLevel; // 주석1 int bLevel; // 주석2
int aLevel, bLevel; 이것보다 줄당 하나의 선언 추천. 같은타입만 사용.
2. 초기화
선언된 지역 변수를 초기화할것. 초기화 하지 않는 유일한 이유는 초기 값이 먼저 발생하는 계산에 의존하는경우
- 온프레미스 : 서버, 스토리지, 데이터베이스, 어플리케이션 > 기업네트워크 - 클라우드 서비스 공급자 :서버, 스토리지, 데이터베이스, 어플리케이션 > 인터넷 클라우드 컴퓨팅을 사용하면 인프라를 하드웨어가 아닌 소프트웨어로 간주하고 사용. - 자본비용을 가변비용으로 - 속도 및 대응력 향상 - 규모의 경제로 얻게되는 이점 - 데이터센터 운영 및 유지 관리 비용에 투자 불필요 - 용량 추정 불필요 - 몇 분 만에 전 세계에 배포 cf) 중고나라 개발인력으로 적은인프라인력으로 운영, KBS 의 아시안게임(이벤트성 서비스)시 비용절감
2) aws 인프라 및 서비스
- 보안 : 보안그룹,네트워크 ACL, AWS IAM <=> 방화벽, ACL, 관리자 - 네트워킹 : Elastic Load Balancing, Amazon VPC <=> 라우터, 네트워크 파이프라인, 스위치 - 서버 : AMI, Amazon EC2 인스턴스 <=> 온프레미스 서버 - 스토리지 및 데이터 베이스 : Amazon EBS, Amazon EFS, Amazon S3, Amazon RDS <=> DAS, SAN, NAS, RDBMS
3) 주요 서비스 분야
-컴퓨팅, 스토리지, 데이터베이스, 네트워킹, 보안
4) 작동방식
-AWS는 하드웨어 소유, 유지관리 - 고객은 필요한 항목 프로비저닝 하고 사용.
5) 클라우드 배포모델
온프레미스 / 하이브리드 / 클라우드
6) AWS 글로벌 인프라
- 데이터 센터 : 일반적으로 수천대의 서버 수용 - 가용영역(AZ) : 하나 이상의 데이터 센터, 내 결함성을 갖도록 설계 cf) 내 결함성 - 리전 : 각 AWS 리전은 두 개 이상의 AZ로 구성
7) 글로벌 인프라
리전선택 : 데이터 거버넌스, 지연, 비용 엣지 인프라 : Amazon CloudFront(콘텐츠 전송네트워크), AWS Outposts, AWS WaveLength
8) AWS 엣지 인프라
최종 사용자에게 짧은 지연시간으로 서비스제공 AWS 추가적인 서비스 = 엔드포인트에서 엔드유저에 더 가까이 이용할수있게한다 - AWS Outposts : AWS 인프라 및 서비스(온프레미스) : 워크로드가 AWS의 나머지 다른 워크로드와 원할하게 실행 사용사례 : 마이그레이션, 로컬 크리티컬 애프리케이션, 데이터 레지던시 서비스 모델 : 고객의 데이터 센터, 코로케이션, 온프레미스 위치의 확장 가능한 용량 - AWS Local Zones : AWS 인프라 및 서비스(대형 메트로 센터) 사용사례 : 마이그레이션, 짧은 지연, 로컬 데이터 처리 서비스 모델 : AWS 관리 및 운영 시설의 확장 가능한 용량 - AWS Wavelength : AWS 인프라 및 서비스 (CSP 5G 네트워크) 사용사례 : 매우 짧은 지연, 로컬 데이터 처리 서비스 모델 : AWS가 관리하고 지원하는 CSP 데이터 센터의 확장 가능한 용량.
9) AWS와 상호작용하는 3가지 방법
- AWS Management Console - AWS CLI - SDK
강의 2: AWS 클라우드 핵심 서비스 소개: 컴퓨팅 - 시간대 2
이기백, 테크니컬 트레이너, AWS
1) Amazon EC2
Amazon Elastic Compute Cloud - 크기 조정 가능한 컴퓨팅 용량 - 컴퓨팅 리소스 완전제어 - 새로운 서버 인스턴스 확보 및 부팅 시간 단축
2) 가상머신과 물리적 서버 비교
온프레미스 서버로 해결하기 어려운 몇몇 문제해결가능 Amazon Ec2는 가상머신, 일종의 Stateless하게 관리(Scale Up, Scale Down) - 데이터 기반 의사 결정 - 빠른 반복 - 자유로운 실수 cf) PoC(Proof of Concept) 실행시 이점. 새로운 프로젝트가 실제로 실현 가능성이 있는가, 효과와 효용, 기술적인 관점에서부터 검증을 하는 과정
3) AmazonEC2 서비스
- Amazon Machine Image(AMI) 사용 : AWS, 마켓플레이스, 사용자 자체 구성 API 생성해서 사용가능. : 애플리케이션 서버, 웹서버, 데이터 베이스 서버, 게임서버, 메일 서버, 미디어 서버, 카탈로그 서버, 파일서버 - 필요에 따라 인스턴스를 추가 또는 종료 - 인스턴스 일시 중지 및 다시시작 - 템플릿: 스토리지 볼륨, 시작권한, 블록 디바이스 매핑)
cf) 정지, 제거시 비용청구안됨
4) AmazonEC2 이점
탄력성, 제어, 유연성, 통합, 안정성, 보안, 저렴한비용, 용이성
5) Amazon EC2 인스턴스 패밀리 및 이름
효율적인 인스턴스 사용과 비용절감을 위해 올바른 유형선택이 매우 중요
인스턴스 패밀리 - 범용( A1, T3, T3a, T2, M6g, M5 ) :트래픽이 적은 웹 사이트와 웹 애플리케이션, 소형 데이터베이스 및 중형 데이터베이스 - 컴퓨팅 최적화(C5, C5n, C4) : 고성능 웹 서버, 동영상 인코딩 - 메모리 최적화(R5, R5n, X1e, X1, z1d ) : 고성능 데이터베이스, 분산 메모리 캐시 - 스토리지 최적화(I3, I3en, D2, H1) : 데이터 웨어하우징, 로그 또는 데이터 처리 애플리케이션 - 엑셀러레이티드 컴퓨팅(P3, P2, Inf1, G4, G3, F1 ) : 3D 시각화, 기계 학습
- 비관리형: 사용자가 조정, 내결함성, 가용성을 관리 - 관리형: 일반적으로 조정, 내결함성, 가용성이 서비스에 내장되어 있음
8) Amazon Elastic Container Service(Amazon ECS)
- 컨테이너의 실행을 조정합니다. - 컨테이너를 실행하는 노드 플릿을 유지하고 관리 - 인프라 구축의 복잡성을 제거
일정 예약 및 오케스트레이션 - 클러스터 관리자, 배치 엔진 쿠버네티스 - EKS
9) 서버리스 컴퓨팅이란?
서버를 관리하지 않고 애플리케이션과 서비스를 구축하고 실행 - 프로비저닝하거나 관리할 서버 없음 - 유휴 상태에 대한 지불 없음 - 사용량에 따라 조정 - 가용성 및 내결함성 내장
10) AWS Lambda
- 완전 관리형 컴퓨팅 서비스 - 상태 비저장 코드 실행 - 다국어 지원 - 일정에 따라 또는 이벤트(예: Amazon S3 버킷 또는 Amazon DynamoDB 테이블의 AWS 데이터 변경)에 대한 응답으로 코드 실행
11) AWS Lambda 예시
1. 사용자가 전체 크기 이미지 업로드 2. 객체가 생성되면 Amazon S3가 이벤트를 Lambda 함수로 보냄 3. Lambda 함수가 이미지 크기를 조정하고, 썸네일을 대상 버킷에 업로드
.. 프로비저닝 하거나 관리할 서버 없음
12) 서버리스 애플리케이션 사용사례
- 웹 애플리케이션 : 정적 웹 사이트, 복잡한 웹 애플리케이션, Flask 및 Express용 패키지 - 백엔드 :애플리케이션 및 서비스, 모바일, IoT - 데이터 처리 : 실시간 MapReduce 배치, 기계 학습 추론 - Chatbot : Chatbot 로직 지원, - Amazon Alexa : 음성 지원 애플리케이션 지원, Alexa Skills Kit - IT 자동화 : 정책 엔진, AWS 서비스 확장, 인프라 관리
강의 3: AWS 클라우드 핵심 서비스 소개: 스토리지, 데이터베이스 - 시간대 2
김지선, 테크니컬 트레이너, AWS
1) AWS 스토리지 옵션
- Amazon S3 : 클라우드상의 확장 가능하고 내구성이 뛰어난 객체 스토리지 - Amazon S3 : Glacier 클라우드상의 저렴하고 내구성이 뛰어난 아카이브 스토리지 - Amazon EFS : Amazon EC2 인스턴스용 확장 가능 네트워크 파일 스토리지 ch)NAS처럼사용 - AWS Storage Gateway :온프레미스에서 거의 무제한의 클라우드 스토리지에 액세스할 수 있는 하이브리드 클라우드 스토리지 서비스 - Amazon EBS : Amazon EC2 인스턴스를 위한 내구성이 있는 블록 수준 스토리지를 제공하는 네트워크 연결 볼륨
2) Amazon S3
- 객체 수준 스토리지 - 99.999999999% 내구성을 제공하도록 설계 - 이벤트 트리거
사용사례 : 콘텐츠 저장 및 배포, 백업 및 아카이빙, 빅데이터 분석, 재해 복구, 정적 웹사이트 호스팅
- 데이터를 저장 및 검색하도록 구축 - 속도, 내구성, 가용성이 뛰어난 객체 액세스 - 버킷에 저장할 수 있는 객체 수에 제한이 없음 - 웹 어디서나 언제든 데이터 저장 및 검색
사용 사례: 미디어 자산 워크플로, 의료 정보 아카이빙, 규제 및 규정 준수를 위한 아카이빙, 과학적 데이터 스토리지, 디지털 보존, 마그네틱 테이프 대체
cf) 탈퇴한 고객 데이터 저장 1기가바이트당 5원.
Amazon EBS
Amazon Elastic Block Store Amazon EBS 볼륨 : 가용영역내에 데이터 미러링. 고가용성. , 특정시점 스냅샷제공 볼륨을 분리하고 다른 EC2 인스턴스에 다시 연결 백업 및 복구를 위한 볼륨 스냅샷 생성
- 인스턴스용 영구 블록 스토리지 - 복제를 통해 보호 - 상이한 드라이브 유형 - 몇 분 만에 확장 또는 축소 - 프로비저닝한 만큼만 요금 지불 - 스냅샷 기능 -암호화 사용 가능
목적별 데이터베이스
- 관계형 데이터베이스 : Amazon RDS : Amazon Aurora, MS SQL Server, MariaDB, ORACLE, PostgresSQL, MYSQL : Amazon Aurora [오로라] : MySQL 및 PostgreSQL 호환 관계형 : 완전관리형 . 고가용성 및 내구성, 고성능, 호환성, 다중리전, 높은 확장성 , Amazon Redshift
- 비관계형 데이터베이스 : 어떤 규모에서든 빠르고 유연한 NoSQL 데이터베이스 서비스 : 완전관리형, 세분화된 앤세스 제어, 빠르고 일관된 성능, 유연성 ex) 순위표 및 점수(플레이어)-> 게임서버-> 순위표 최상의 수평확장기능 필요, 단순한 대용량 데이터, 신속하고 간편하게 확장, 복잡한 조인이 필요하지 않음
DIY : EC2에 직접 DB 설치 하는 옵션 : AWS 사용하지 않은것 사용가능, 세밀한조정가능 AWS 데이터베이스 서비스 : 복잡한 관리작업 AWS 위임. 손쉬운 DB 이중화 외
강의 4: AWS 클라우드 핵심 서비스 소개: 네트워킹, 보안 - 시간대 2
이기백, 테크니컬 트레이너, AWS
-네트워킹
Amazon VPC
Amazon Virtual Private Cloud
- AWS 클라우드의 프라이빗 네트워크 공간 - 워크로드의 논리적 격리 제공 ex) 개발용, 테스트용 - 리소스에 대한 사용자 지정 액세스 제어 및 보안 설정 허용
서브넷을 사용하여 VPC 분리
서브넷은 리소스 그룹을 격리할 수 있는 VPC IP 주소 범위의 세그먼트 또는 파티션입니다. 서브넷은 인터넷 접근성을 정의합니다. 프라이빗 서브넷 • 인터넷 게이트웨이에 대한 라우팅 테이블 항목 없음 • 퍼블릭 인터넷에서 직접 액세스 불가
VPC의 계층화된 네트워크 방어
출처 : AWS AWSOME DAY
인프라 구조화
ELB
Elastic Load Balancing
수신되는 애플리케이션 트래픽을 여러 Amazon EC2 인스턴스, 컨테이너, IP 주소에 분산하는 관리형 로드 밸런싱 서비스
고가용성, 상태확인, 보안 기능
Amazon Route 53
Amazon Route 53
Domain Name System(DNS) 도메인 이름을 구입하여 관리하고 DNS 설정을 자동으로 구성할 수 있습니다. 멀티플 라우팅 옵션...사용자 위치에 따라 vpc 위치를 조절할수있다.
- 보안
AWS 공동 책임 모델
과제: 보안을 고려한 설계, 지속적 모니터링, 고도의 자동화, 높은가용성, 엄격한 인증
AWS Identity and Access Management(IAM)
AWS 리소스에 대한 액세스를 안전하게 제어 사용자, 그룹 또는 역할에 세분화된 권한 할당 AWS 계정에 대한 임시 액세스 공유 회사 네트워크의 사용자 연동 또는 인터넷 자격 증명 공급자와 연동
IAM 구성 요소
사용자 : AWS와 상호 작용하는 사람 또는 애플리케이션 그룹 : 동일한 권한을 가진 사용자 모음 역할 : 엔터티가 맡을 수 있는 임시 권한
- 사용자가 액세스할 수 있는 AWS 리소스 정의 - 자격 증명 및 액세스 제어 표준을 충족하는 데 도움: 인증, 권한부여
계정은 루트 사용자 권한, 해당 계정 탈취시 심각한 보안문제. MFA, 멀티팩트 인증을통해 사용하는것을 추천.
IAM 사용자
IAM 사용자는 별도의 AWS 계정이 아닌 계정 내 사용자 각 사용자는 자체 자격 증명 보유 IAM 사용자는 자체 권한을 기준으로 특정 AWS 작업을 수행할 권한 보유
Amazon S3 액세스 제어: 일반
S3 버킷 정책 > 프라이빗, 퍼블릭 선택적 접근가능.
AWS CloudTrail
누가? 무엇을? 언제? 어디로? AWS 계정의 사용자 활동 및 API 사용 추적 지속적으로 사용자 활동을 모니터링하고 API 호출을 기록 규정 준수 감사, 보안 분석, 문제 해결에 유용 로그 파일은 Amazon S3 버킷으로 전송됨
AWS Trusted Advisor
비용 절감, 성능 개선, 보안 강화에 도움이 되는 지침을 제공하는 서비스 비용최적화, 성능, 보안, 내결함성 기능, 서비스 한도
강의 5: AWS와 함께 혁신하기 - 시간대 2
김지선, 테크니컬 트레이너, AWS
- 사물
당면 과제
관리 및 업데이트 ▪ 일관되지 않거나 간헐적으로 끊기는 네트워크 연결 ▪ 디바이스가 원격에 있어 물리적으로 액세스할 수 없음 ▪ 생산 단계의 대규모 디바이스 플릿 분석 ▪ 컴퓨팅 파워와 사양이 낮은 디바이스의 리소스 ▪ 디바이스가 많은 양의 스트리밍 데이터를 내보낼 수 없음
고객이 AWS IoT를 사용하여 하는 일
분석 서비스 AWS IoT Device Management AWS IoT Device Defender AWS IoT Core 연결성 및 제어 서비스 AWS IoT Device Tester
AWS IoT 서비스
분석 서비스 : AWS IoT SiteWise, AWS IoT Analytics, AWS IoT Events, AWS IoT Things Graph 연결성 및 제어 서비스 : AWS IoT Core, AWS IoT Device Management, AWS IoT Device Defender 디바이스 AWS IoT Device SDK 소프트웨어 : FreeRTOS, AWS IoT Device SDK, AWS IoT Greengrass, AWS IoT Device Tester
AWS IoT Core: 신속한 개발
AWS IoT Greengrass
데이터를 로컬에저장, 필요한데이터만 클라우드에 전송.
- 기계학습
기계 학습이란 무엇입니까?
인공 지능(AI) : 컴퓨터가 로직, if-then 문, 기계 학습(딥 러닝 포함)을 사용하여 인간 지능을 모방할 수 있게 하는 모든 기술 기계 학습(ML) : 기계로 데이터의 패턴을 검색하여 논리 모델을 자동으로 빌드하는 AI 하위 집합 딥 러닝 : 음성 및 이미지 인식과 같은 작업을 수행하는 심층 다중 계층 신경망으로 구성된 ML 하위 집합
Amazon SageMaker 개요
Amazon Rekognition[리코그니션]
객체 및 장면 탐지 얼굴 분석 얼굴 비교 얼굴 인식
- 블록체인
블록체인이란 무엇입니까?
블록체인을 활용하면 신뢰할 수 있는 중앙 기관이 없어도 여러 당사자가 트랜잭션을 실행할 수 있는 애플리케이션을 구축할 수 있습니다. 현재는 기존 기술로 확장 가능한 블록체인 네트워크를 구축하는 과정이 설정상 복잡하고 관리하기 어렵습니다.
블록체인 특징
AWS 블록체인 서비스
Amazon Managed Blockchain 기능
사용 사례 예시
Amazon Managed Blockchain을 활용하여 공급망 투명성을 높인 Nestlé의 Chain of Origin 커피
- AWS Ground Station
AWS Ground Station
자체 지상국 인프라 구축이나 관리를 걱정할 필요 없이 인공위성 통신을 제어하고 데이터를 처리하며 작업을 확장할 수 있는 완전관리형 서비스입니다.
• 인프라 약정 없이 위성 지상 지원 • 분 단위 요금 • 셀프 서비스 일정 예약 • AWS 리소스 및 서비스에 직접 액세스할 수 있는 공동 지상국 및 AWS 데이터 센터 • 요금에 포함된 고객 선택 리전으로 기본 대역 데이터 백홀 • 거의 실시간으로 데이터 전송
일반적인 위성 데이터 클라우드 처리 사용 사례
업계 당면 과제
AWS Wavelength
AWS Wavelength
AWS Wavelength는 AWS 컴퓨팅 및 스토리지 서비스에 5G 네트워크의 높은 대역폭과 매우 짧은 지연을 결합하여 개발자가 완전히 새로운 종류의 애플리케이션을 혁신하고 제작할 수 있습니다. CSP 5G 네트워크의 AWS 인프라 및 서비스 지연이 매우 짧은 로컬 데이터 처리 AWS가 관리 및 지원하는 CSP 데이터 센터의 확장 가능한 용량
모바일 엣지 컴퓨팅: 특징
센서, 비디오 카메라, IoT 디바이스 등 대량의 데이터를 생성하는 엄청나게 많은 디바이스 데이터 생성과 가까운 곳에서 데이터 처리 필요 지연이 매우 짧은 실시간
5G 및 모바일 엣지 컴퓨팅
AWS Wavelength: 모바일 엣지용으로 구축
AWS Wavelength 사용 사례
온디맨드 : On-Demand : 주문형 서비스 : 이쪽으로와!!!
1. 소비자가 있는 곳까지 찾아가서 상품과 서비스를 전달하는것
2. 이용자의 요구에 따라 상품이나 서비스가 바로 제공되는것.
내 결함성 : FT : Fault Tolerance
다운 타임을 최소화 = 시스템 구성 요소중 하나가 다운되더라도 시스템이 계속 작동할수 있다.
우리의 생활에서 실제로 만질 수 있거나 볼 수 있거나 하는 것(길이, 무게, 부피 측정가능 대상)에 대해서 물리적인 단위로 표현하여 얻어낼 수 있는 내용
정보
어떤 상황에 대해서 적절한 의사결정(decision)을 할 수 있게 하는 지식(knowledge)이며, 자료의 유효한 해석이나 자료 상호 간의 관계 어떠한 상황에 적절한 결정이나 판단에 사용될 수 있는 형태로 가공되거나 분류되기 위해 '처리과정'을 거쳐서 정리되고 정돈된 '자료'의 2차 처리 결과물
추상화
공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것
자료의 추상화
다양한 객체를 컴퓨터에서 표현하고 활용하기 위해 필요한 자료의 구조에 대해서 공통의 특징만을 뽑아 정의 한 것
자료구조
추상화를 통해 알고리즘에서 사용할 자료의 논리적 관계를 구조화 한 것
자료구조 &알고리즘
자료구조는 입력값에 대한 추상화 알고리즘은 (컴퓨터)수행해야 할 명령의 추상화
자료구조 종류
자료구조 > 미리 정의된 자료구조 = 기본자료구조(정수, 실수, 문자) + 파생된 자료구조(배열, 구조체, 포인터) + 사용자 정의 자료구조 = 리스트, 트리, 스택, 그래프, 큐
알고리즘
1. 정의 : 컴퓨터가 특정한 일을 수행하는 명령어들의 유한 집합
2. 조건 : 출력, 유효성, 입력, 명확성, 유한성
3. 성능분석(performance analysis) - 실행시간 분석 : O(n) - 실행메모리 분석 : 필요한 공간(메모리)을 추정하여 성능분석 > Sp = Sc + Se ; 공간복잡도 = 고정공간 + 가변공간 공간복잡도 : 완료하는 데 필요한 총 메모리 공간 고정공간 : 입출력 횟수 관계없이 실행 끝날 때까지 고정적으로 필요한 메모리 공간 가변공간 : 동적으로 할당되어야 하는 자료구조, 변수들을 위해 필요한 메인 메모리 공간
4. 성능 측정(performance measurement) 컴퓨터가 실제로 프로그램을 실행하는 데 걸리는 시간을 측정 하여 알고리즘의 성능을 측정 > 실행시간 시계, 시스템시계
배열
1. 정의 : 인덱스와 원소값의 쌍으로 구성된 집합 (by 사전) 일정한 차례나 간격에 따라 벌여 놓음
2. 특징 배열의 순서는 메모리 공간에 저장되는 "원소값의 물리적 순서" 같은 자료형과 같은 크기의 기억공간을 가짐. 인덱스값을 이용한 직접 접근 가능
3. ADT Array 객체 = <Index, Element> 쌍들의 집합 추상 자료형 : 객체 및 관련된 연산의 정의 자료형 : 메모리 저장 할당을 위한 선언
4. 연산구현 create retrieve store
5. 2차원배열 - 행우선배열 - 열우선배열
6. 희소행렬 0인 원소가 그렇지 않은 원소보다 상대적으로 많을 때, 0아닌 값만 따로 저장
cf) 메모리 주소값 = 실제 메모리 물리적인 위치값 인덱스 값 = 개발자에게 개념적으로 정의
자료형
자료가 기억될 기억 장소의 유형, 즉 정수형, 실수형 등
추상 자료형
자료의 복잡한 논리적 성격을 정의하는 형식으로 자료 값의 집합과 연산 집합에 대한 명세의 집합
1. 정의 언제 어디서나 필요한 만큼의 컴퓨팅 리소스를 인터넷을 통하여 활용할 수 있는 컴퓨팅 방식. =(by 일반적) 인터넷상에 존재하는 클라우드 사업자에 의해 서비스가 제공되는 컴퓨팅 기술 =(by 위키피디아) 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드(인터넷)에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. =(by AWS) 클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용하는 만큼만 비용을 받는 것을 말한다. =(by NIST , 미국 국립 표준기술원) ** 가장많이 인용 The NIST Definition of cloud Computing 클라우드 컴퓨팅은 어디에서나 동작하고 편리하며, 최소한의 관리 노력이나 서비스 제공자와의 상호 작용을 통해 빠르게 제공하고 배포할 수 있는 구성 가능한 컴퓨팅 리소스(예: 네트워크나 서버, 저장소, 애플리케이션 및 서비스)의 공유 풀에 주문형 네트워크로 접근 가능한 모델. 이 클라우드 모델은 5가지 본질적 특성과 3가지 서비스 모델, 그리고 4가지 배포 모델로 구성된다.
5가지 본질적 특성
1. 온디맨드 셀프 서비스(on-demand self-service) 서버, 네트워크 장치, 저장 장치 등의 it리소스를 사용자가 전문가의 개입 없이 필요한만큼 자동적으로 확보해 사용할 수 있다는 특징.
2. 광범위 네트워크 액세스 클라우드 컴퓨팅은 서버가 원격지에 가상으로 존재하여 네트워크로 연결되는 클라이언트-서버구조. 한 형태. 모바일, 노트북, pc 기종상관없이 웹 인터페이스를 통하여 서비스에 접근할 수 있는환경 제공. 클라이언트-서버 모델: 클라이언트, 서버간 작업 분리해주는 분산 애플리케이션 구조, 네트워크 아키텍쳐 1) 팻 클라이언트 (fat Client) : 중앙 서버와 독립하여 풍부한 컴퓨팅 기능 보유한 클라이언트-서버 구조나 네트워크 클라이언트 2) 씬 클라이언트 (Thin Client) : 자신의 컴퓨팅 역할을 충족시키기 위해 다른 일부 컴퓨터(서버) 에 크게 의존하는 컴퓨터나 네트워크 클라이언트
3. 리소스 풀링 멀티테넌트 모델을 기반, 사용자는 요구에 따라 물리 가상의 리소스를 동적으로 할당 받을수 있다. 하드웨어 통합은 물리적으로 모아 배치하는 위치통합(co-location)이 아닌, 복수의 서버를 단일 플랫폼으로 구성하여 풀링 여러 컴퓨터의 기능을 단일 서버에서 하나의 시스템으로 통합할 때 더 적은 IT 리소스로 더 많은 작업을 할 수 있다. - 풀링 : pooling: 저장소인 풀(pool)에서 객체를 관리하고 필요한 사용자에게 할당하여 사용, 사용 후에는 풀로 반환하는 기법. - 테넌트 : tenant : (by 일반적)공동주택에 거주하는 입주자, (by 컴퓨팅 환경)단위화 랄 수 있는 한 조직의 인프라 또는 서비스 - 멀티테넌트 모델(다중 소유 모델) : 하나의 서비스를 여러 태넌트가 함께 사용하지만 논리적으로 분리되어 있는 소프트웨어 아키텍처 - 멀티 태넌시 : multi-tenancy: 논리적으로 분리된 영역 내에서 다중의 사용자에게 개별 프로그램 인스턴스를 제공하여 각 사용자가 독립적으로 사용하게 하는 소프트웨어 프로그램. - 싱글 테넌트 : 각 유저마다 독립적으로 분리된 가상화된 환경 사용.
4. 신속한 탄력성 사용자의 요구에 따라 IT 리소스를 무한대로 확장할 수 있고, 언제든지 축소할 수 있다. 그리고 이러한 작업은 수분 이내로 처리된다. 사용자는 추가 리소스 사용량에 대한 비용만을 추가적으로 부담하여 가용 컴퓨팅 리소스와 요금 측면에서 탄력성을 갖는다.
5. 서비스 사용량 측정 저장장치, cpu, 네트워크 대역폭 등 다양한 리소스 사용량을 미터링(metering) 하여 클라우드 사용자에게 보고해 투명성 제공, 추가협약에 따른 사용량 제어, 최적화 수행 장애허용(fault tolerant) 시스템을 구축하여 장애가 발생하여도 클라우드 사용자가 서비스를 지속적으로 받을 수 있는 환경 제공. ex) Azure의 경우 가상 서버에 대해 시간당 사용료를 책정, 사용하려는 서버의cpu 코어 갯수 , 메모리, 저장장치 용량, 저장장치의 종류등에 따라 사용료가 다르다. - 장애 발생시 한국 클라우드산업협회 클라우드 표준계약서작성. ex) Azure의 경우 SLA의 성능 목표에 따른 가동 중지 시간 명시 99.999% 작동시간 제공. DB 10밀리초 미만 대기시간 *SLA : Service Level Agreement : 측정 지표와 목표등에 대한 협약서. cpu 가동시간, 응답시간, 헬프 데스크 응답시간, 서비스 완료시간 포함.
3가지 서비스 모델
1. SaaS : Software as a service 클라이언트 사용자에게 소프트웨어를 가상화 하여 제공, 웹브라우저를 통해 실행, 다운로드 설치를 필요로 하지 않음. - 데이터 센터, 네트워킹 방화벽, 보안, 서버 및 저장소, 운영제체, 개발도구, DB관리, 비지니스 분석, 호스팅 된 응용프로그램 앱 제공.
-SaaS의 주요서비스 1)ERP: 전사적 자원관리 클라우드 제공서비스 2)CRM: 고객관리 소프트웨어 클라우드 제공서비스 3)SCM: 공급망 관리를 클라우드 제공서비스 4)문서편집 : 문서편집 기능을 클라우드 제공서비스 5)그룹웨어: 메신저, 메일, 전자결재 등 기업 내 또는 기업간 필수 커뮤니케이션 기능 협업기능 클라우드 제공서비스 6) 문서관리 : 기업 효율적 문서관리, 그에 관련된 S/W 클라우드 제공서비스 ex) 구글 앱스. Notion
2. PaaS : Platform as a Service 사용자가 직접 특정 소프트웨어 자체개발 애플리케이션을 위해 클라우드 제공자로부터 기반 환경 , 플렛폼 제공받는 모델. 제공자는 물리적 컴퓨팅 리소스 라이브러리, API 등을 제공 및 관리 장애 발생시 복구 및 유지보수에 대한 모든 책임. DBaaS : Database as a service - 데이터 센터, 네트워킹 방화벽, 보안, 서버 및 저장소, 운영제체, 개발도구, DB관리, 비지니스 분석 ex) 구글 App Engine: 애플리케이션을 빌드하고 배포 가능한 플랫폼 환경 제공 모바일 게임의 경우 MsSQL 서버 기반의 데이터베이스를 기반으로 플레이어의 데이터 관리
3. IaaS : Infrastructure as a Service 사용자가 운영하고자 하는 서비스에 요구되는 프로세서, 스토리지 용량, 메모리 등의 하드웨어를 상세하게 명시하고 제공, 다른 클라우드 서비스 모델과 다르게 사용자가 가상 인프라와 관련된 컴퓨팅 리소스와 물리적 컴퓨팅 리소스에 대해 고수준의 관리 및 제어 권한을 갖는다. - 데이터 센터, 네트워킹 방화벽, 보안, 서버 및 저장소, ex) 넷플릭스 . 온프레미스환경에서 aws로 이동, 자체적인 스트리밍 기술 보유, 컴퓨팅 리소스에대한 일정수준제어권한만 필요. 시청증가 대응.
4. 기타 클라우드 서비스 모델 예시 FaaS : Functions as a Service : 큰 시스템을 구성하는 개별 기능, 비즈니스 로직, 혹은 함수를 클라우드에 등록하고 연산에 처리되는 컴퓨팅 리소스를 클라우드 제공자 측에서 관리 Paas와 유사하게 보일 수 있지만 함수 호출이 요청될때만 연산을 수행하며 요청이 없을 시에는 컴퓨팅 리소스를 사용하지 않는 것이 주요특징 = 과금의 모델도 함수 호출횟수만큼지불 ex) AWS 람다(Lambda), 구글의 클라우드 펑션(Cloud Functions), 그리고 마이크로 소프트의 Azure의 펑션(Functions) FaaS는 서버리스(Serverless)라고 불리지만, 실제 서버가 없는 것이 아니라, 특정작업(함수)을 실행하기 위해 물리적 컴퓨팅 리소스를 가상화하여 서버로 사용하지 않는 측면에서 서버리스라고 불린다. FaaS의 활용으로는 주기적으로 웹 페이지의 데이터를 수집하는 크롤링 작업, 넷플릭스의 경우 동영상을 업로드했을 때 이를 인코딩, 검증, 태깅, 공개하는 작업들과 백업관련 잡업 Lambda를 통해 처리.
CaaS : Container as a Service 사용자가 컨테이너 및 클러스터를 구동하기위한 컴퓨팅 리소스 및 그에 따른 기술. 컨테이너 : 애플리케이션과 이를 실행하기 위해 요구되는 라이브러리, 바이너리, 구성 파일과 같이 운영체제를 제외한 모든 소프트웨어 자원을 묶은 패키지 일반적으로 개발자가 작성한 애플리케이션을 개인 환경에서 테스트 환경으로 그리고 운영환경으로 이전할 때마다 많은 오류과 시행착오를 겪게 되는데, 이는 각 환경마다 네트워킹, 보안, 스토리지 등등 프레임워크 계층 구성이 다르기 때문 이에대한 기술 ex) AWS의 ECS(Elastic Container Service), Azure Kubernetes Service(AKS) 컨테이너관리 플랫폼 Docker(컨테이너엔진)가 호스트 운영체제의 커널을 통하여 컨테이너를 실행, 따로 가상 머신 이미지 생성하고 그안에 운영체제를 설치하여 리소스를 관리하지 않기 때문에 실행가볍고, 호수트 운영체제를 공유하기 때문에 성능도 호스트환경에서 실행하는 것과 유사하게 나오는장점. 이식성높다. ex) GoPro 사 페타바이트 단위의 데이터를 처리하며 이를 위해 수만개 API 요청을 받음 EC2를 사용했으나 ECS로 변경했고 리소스 70%절감했다.
복합서비스 VDI :Virtual Desktop Infrastructure :소프트웨어를 사용하여 데스크탑을 가상화하고 이를 중앙장치에서 네트워크를 통해 사용자에게 제공하는 서비스. OS, 사용자 정보 및 데이터는 IT관리자가 중앙에서 관리하는 서버에서 실행, 저장되고 사용자는 사용자 단말(VDI 이미지의 원격 액세스를 위한 네트워크 연결기기)을 이용해 접근
CDN : Contents Delivery Network : 게임 동영상 , 애플리케이션 등의 콘텐츠를 글로벌 서버를 구축하여 네트워크 상황과 기기에 맞춰 최적의 속도로 제공하는 서비스.
4가지 배포모델
1. 프라이빗 클라우드 하나의 기업, 조직, 독립적으로 컴퓨팅 리소스를 소유하는 형태의 배포모델 2. 커뮤니티 클라우드 정책, 혹은 내규에 따른 공통된 보안 요구사항이 있는 여러기업 및 조직 내 구성원들의 커뮤니티가 독점적으로 사용될 수 있도록 컴퓨팅 리소스를 관리하는 형태의 클라우드. 커뮤니티 자체적으로 온프레미스 환경에서 운영하거나 클라우드 서비스 업체에 의해 제공 받을 수 있다. ex)뉴욕 증권거래소 의 자산내역 민감데이터 3. 퍼블릭 클라우드 클라우드 제공자가 소유. 네트워크를 통하여 사용자가 이용할수 있도록 운영. 데이터에 따라 요구되는 보안정책수준이 다르기 때문에 추가적인 보안 옵션이 필요할 경우 퍼블릭 클라우드를 사용할 수 없게 된다. 4. 하이브리드 클라우드 퍼블릭클라우드+프라이빗클라우드+온프레미스 결합 배포모델, 데이터, 어플리케이션 공유환경 다양한 클라우드 배포모델 연계, 상황에 적합한 데이터 관리작업. 보안-> 프라이빗 클라우드 일반사용자& 서비스제공자-> 퍼블릭클라우드 - 클라우드 버스팅 기술: cloud bursting 플라이빗 클라우드 내 사용량 급증시 it리소스 추가 투입할때 퍼블릭클라우드 리소스를 추가하여 사용하는 기술 . 관리책임 분리 등의 이유로 구축관리는 어려움. - 멀티클라우드 관리 플랫폼 멀티클라우드(여러 서비스 제공자로부터 퍼블릭 클라우드 병행하여 사용하는 모델)관리하는 플랫폼 제안되고 있음.
클라우드 컴퓨팅 특징
1. 접속용이성 : 시간 장소 상관없이 인터넷통해, 표준화된 접속을 통해 다양한 기기 서비스이용 2. 유연성 : 갑작스런 이용량 증가, 이용자수 변화 중단없이 유연하게 대응 3. 주문형 셀프서비스 : 이용자는 서비스 제공자와 직접 상호작용 거치지 않고, 자율적으로 자신이 원하는 클라우드 서비스 이용가능 4. 가상화와 분산처리 : 컴퓨팅 리소스의 사용성 최적화, 방대한 작업 분산처리로 시스템 과부화 최소화 5. 사용량 기반 과금제 : 사용량에대해서만 비용지불
서버, 저장장치, 데이터베이스, 네트워크 및 이메일, 보안, 백업/복구 등의 기업용 소프트웨어
IT 리소스
컴퓨팅 하드웨어 및 소프트웨어를 포괄하는 IT구성요소
Pay as you go
IT 리소스를 사용하는 만큼 비용을 지불하는 방식
클라우드 컴퓨팅 = aka . 클라우드
1. 정의 컴퓨팅 리소스를 필요한 시간만큼 인터넷을 통해 활용할 수 있는 컴퓨팅 방식 =(by 일반적) 인터넷상에 존재하는 클라우드 사업자에 의해 서비스가 제공되는 컴퓨팅 기술 =(by NIST : Natinal Institute of Standards and Technology 미국 국립 표준기술원) 클라우드 컴퓨팅은 컴퓨팅 리소스(서버, 저장장치, 애플리케이션, 네트워크 등) 에 언제 어디서나 필요에 따라 편리하게 네트워크를 통해 접근하는 기능을 제공하는 모델 컴퓨팅 리소스는 최소한의 관리로 신속하게 프로비저닝 되고 배포 될 수 있다. 클라우드 모델은 5가지 기본특성 3가지 서비스 모델 4가지 배포 모델링으로 이루어진다. =(by 가트너) 확장 가능하고 탄력적인 IT 기능이 인터넷을 사용하는 외부 고객들에게 서비스 형태로 제공되는 컴퓨팅 방식 =(by 한국 2017년 제정된 "클라우드 컴퓨팅 발전 및 이용자 보호에 관한법률" ) 집적 · 공유된 정보통신 기기, 정보통신 설비, 소프트웨어 등 정보통신 리소스를 이용자의 요구나 수요의 변화에 따라 정보통신망을 통해 신축적으로 이용할 수 있도록 하는 정보 처리 체계
2. IT 리소스를 소유하는 것이 아니라 렌탈 서비스의 형태로 이용하는 모델 하드웨어 : 물리서버, CPU, 메모리, 네트워크 장비, 저장장치 소프트웨어 : 운영체제, 플랫폼, 유틸리티, 애플리케이션, 그룹웨어 등
프로비저닝
IT 리소스를 실시간으로 사용 가능한 상태로 만드는, 또는 규격품 형태로 패키징 기술
클라우드 역사 개요
1961년 존매카시의 유틸리팅 컴퓨팅 1970년 인터넷의 시초 알파넷(ARPANET) 1980년 네트워크, 웹개술 발전 1990년 웹기반으로 유틸리티 기능 이전 1996년 컴팩컴퓨터 "인터넷 솔루션 디비전" 처음 클라우드 컴퓨팅 용어 등장 2000년 유휴리소스(idle resource) 활용 통해 원격으로 프로비저닝(Provisioning)되는 실험적서비스 2002년 아마존(amazon.com)의 아마존웹서비스(Amazon Web Services)시작 AWS 의 EC2, S3, 구글의 구글앱스를 시작으로 웹브라우저에서 실행 가능하며 가용성이 향상된 기업용 애플리케이션 서비스 제공. 클라우드 컴퓨팅 대중화 시작
>>1960년대 개념화된 유틸리티 컴퓨팅을 시작으로 네트워크/웹 기술, 가상화 기술, 프로비저닝 기술, 그리드 컴퓨팅 기술이 발전하여 클라우드 컴퓨팅이 가능해졌다.
- 1980년 메인프레임 : 정보처리 담당 중앙집중식 데이터처리 대형컴퓨터 + 데이터 입출력 표시 기능 담당 터미널로 구성 - 1990년 PC(Personal Computer) : 클라이언트-서버모델 주류(cs : 중앙 컴퓨가 PC에 데이터 처리 업무를 일부 맡기는 분산형처리 ) - 2000년 그리드컴퓨팅 : 유무선 네트워크 기술의 대중화, 기업 내 시스템이 네트워크와 인터넷 인터페이스, 웹서비스를 활용하여 다른 종류의 컴퓨터들 간에 상호작용을 통한 서비스 지향적 컴퓨팅 - 2010년 클라우드 컴퓨팅 : 전세계 구축된 데이터 센터의 IT 리소스를 필요할 때 필요한 만큼 사용.
클라우드 등장배경
1. 서버의 유휴 리소스 활용을 통한 효율성 향상_ 빅데이터, 인공지능 영향 : 개별 서버 리소스 사용률 평균 10~15%, 사용하지 않는 컴퓨팅 리소스를 여러 사용자가 공유 70%까지 향상 2. 가상화 기술 , 분산처리 기술 발전, 규모의 경제(큰 규모 운영시 더 효율적으로, 단위당 낮은비용) : CPU, RAM, 저장장치 H/W적 발전, 가상화 기술 분산처리 기술 S/W발전 3. 사용자 맞춤형 서비스, 등 특화된 서비스를 제공하려고하는 사회 트랜드 변화 : 클라우드 컴퓨팅 발전 및 이용자 보호에 관한 법률 : 사회 트렌드 변화로 새로운 서비스를 신속하게 개시 제거 >> 사용자에게는 IT 투자 비용을 절감하고, 유연한 서비스 설계, 구축 운용비용 경감
서버의 종류와 기능
1. 애플리케이션 서버 : 업무처리 담당, 요청을 받아 업무 규칙에 따라 처리한후 결과 반환기능 2. HTTP 서버 : 기업의 홈페이지 등인터넷 기반 정보제공 3. 데이터베이스 서버 : 조직에서 사용하는 데이터를 무결하게 관리하는 기능담당 4. 메일 서버 : 이메일을 수발신하는 서버 SMTP, POP3, IMAP 등의 프로토콜에 대응 5. DNS 서버 : 도메인 이름과 IP 주소를 변환하는 기능담당 6. 그룹웨어 서버 : 기업에 한정되어 업무처리에 특화된 그룹웨어 기능담당서버 7. 네트워크 관련서버 : DNS 서버, Proxy 서버, NAT 서버 등 네트워크 기동 및 접속에 필요한 기능을 담당하는 서버 8. 인증서버 : 사용자에게 부여된 권한에 따라 접근을 제어하는 기능 담당.
온프레미스
On-Premise System 기업이 IT 시스템 운용에 요구되는 데이터 센터에 다수의H/W , S/W 설비를 자체적으로 보유하고 운용하는 방식 =(일반적) 클라우드 기반의 IT 시스템이 아닌 자체 하드웨어를 보유한 것을 의미하며 클라우드의 반의어로 통용
온프레미스 시스템구축
온프레미스 : 요구기능수집 -> 설계 -> 조달 -> 구축 -> 운영 (->시스템확장 : 조달-> 구축 -> 운영) 클라우드 : 요구기능수집 -> 설계 -> 클라우드 서비스(조달 -> 구축 -> 운영) 1. 요구수집 - 용량계획 (capacity planning) 서비스에서 요구되는 하드웨어 등 it 리소스 필요량 추정 확보 계획 - 결핍 (deficit) : 리소스 제공량이 서비스 요구량에 미달된 상태 - 잉여 (surplus) : 리소스 제공량이 서비스 요구량을 초과한 상태 2. 설계 - 피크타임(peak time) : 최대 사용 요구량. 평소에는 대다수의 it 리소스가 유휴상태인 잉여 리소스가 된다. 3. 조달 - 조달: 설계 단계에서 작성된 시스템 사양에 맞춰 데이터 센터 구축에 필요한 전체적 구성요소를 실제적으로 구비하는 단계 IT 벤더사를 통해 조달 A사, 회선 B사, 네트워크장비 C사... 4. 구축 기업내의 기술력과 경험을 갖춘 인적 자원활용 5. 운영 H/W, S/W자산의 관리 및 모니터링 데이터 백업 서버실 관리, 시스템 보안 대응 시설관리, H/W임대, 유지보수, 회선, 운영 담당자, 인건비 등다양한 요소의 부대비용
클라우드 제공자 : Cloud Provider 조달> 구축 : 원스톱 제공. : 클라우드 기반 it리소스 제공하는 기업, 사용 기업과 이용계약, SLA 등과 같은계약을 통해 IT 리소스의 조달및 유지 보수
SLA
Service Level Agreement : 사용자 수준 계약 : cp가 서비스 수준 정량화, 미달하는 경우 손해를 배상하도록 하는 서비스 품질 보장 계약
CapEx
[캡팩스] = Capital expense , 자본지출 물리적 인프라에 대한 비용을 초기에 지출, 시간 지남에 따라 납입 고지서에서 비용을 공제하는 지출방식 시간이 지남에 따라 감가삼각. => 온프레미스
OpEx
[옵팩스]= Operational expense, 운영지출 현재 서비스, 제품에 대해 균등하게 지출되어 청구 되고있는 비용, 초기비용없는 서비스, 제품에 대한 지불. => 클라우드 컴퓨팅(캡팩스에서 옵팩스로 전환)
lift and shift
온프레미스 사용기업 작은업무부터 클라우드로 이관하여 클라우드 기반 시스템을 축적한후 인프라 및 관리 비용을 절감하기 위해 점진적으로 이동하도록 선택할 수 도 있다.
서비스모델
1. IaaS[이아스] : Infrastructure as a service : CPU, 메모리 등의 H/W 리소스 제공 클라우드 서비스 2. PaaS[파스] : Platform as a Service : IaaS + OS와 S/W 개발이나 데이터 분석위한 도구들제공 3. SaaS[사스] : Software as a Service : PaaS + 응용 S/W (애플리케이션) 까지 제공.
배포모델
클라우드 컴퓨팅 사용하기에 앞서 결정해야 할 사항, 클라우드컴퓨팅 아키텍처를 정하는 일 1. 퍼블릭 클라우드 Public Cloud : 다수의 사용자가 클라우드 제공자가 공급하는 서버, 저장소와 같은 it리소스 공유 사용 모델 ex) AWS, Azure, GCP, Naver Cloud 2. 프라이빗 클라우드 Private Cloud : 단일 조직이 독점적으로 데이터 센터를 구축하고 독점적으로 사용하는 컴퓨팅 환경. 온프레미스방식과 유사하지만, 데이터 센터의 it 리소스를 가상화하여 사용하는 방식, 특정 조직 내에서만 운영되고 접근 가능한 폐쇄적 클라우드 3. 하이브리드 클라우드 Hybrid cloud : 둘 이상의 호환되는 여러 클라우드 인프라가 결합되어 사용되는 방식 일반적으로 프라이빗 클라우드의 용량이 부족시 퍼블릭 클라우드의 인프라가 결함되어 사용되는 방식 4. 커뮤니티 클라우드 Community cloud : 금융권과 같이 여러 조직의 업무와 기능이 유사한 경우, 파트너쉽을 맺고 연합된 조직 또는 코뮤니티가 펴블릭 클라우드와 유사하게 공동으로 데이터 센터를 구축하고 공유된 접근을 허용하는방식.
장점
1. 탄력성 : 초기 투자 비용 없이 대규모 컴퓨팅 인프라를 확보할 수 있는 탄력성(=탄력적리소스제공) -it 리소스 프로비저닝 기술, 운영에 관한 세부사항을 실시간으로 "as a service" 사용모델을 제공 2. 신속성 : 몇번의 마우스 클릭만으로 신속성 있게 구축 3. 경제성 : H/W, S/W 소유하지 않아도 서비스 사용가능 4. 신뢰성 : 예측불가능 요구 사용량 대응. 임곗값(threshold)도달 시 서비스 중단에 따른 손실 피함 - 가용성 : availability : 가용성이 높다 = 오랜시간 접근 가능하다. - 신뢰성 : reliability : 예외 상황 발생 시 더 욱 신속하고 효과적으로 복구 가능. 온프래미스의 경우 백업(backup), HA(High Availability: 이중화) 등의 조치 필요 .
단점
1. 보안 취약성 증가 기업의 신뢰 경계를 기업 내부에서 외부 클라우드 데이터 센터까지 확대해야 한다. 취약점의 증가, 보안 아키텍처 구축이 어려워짐 클라우드-사용자 연결 네트워크 다운, 공격자의 통신 도청, 중간자 공격, 스푸핑 등의 공격 리스크도 높아짐. 약의적인 사용자로부터 클라우드 it리소스 내의 데이터를 도용하고 손상시킬 수 있는 기회 제공.
2. 책임소재 불분명 온프레미스 it리소스 보다 낮은 수준의 관리 제어권한 사용자와 클라우드 제공자 사이의 지리적 거리가 멀수록 네트워크 전달 단계가 많아져 지연시간 발생 및 잠재적 대역폭의 제약 이러한 문제에 대해 클라우드 사용자가 대체하거나 해결할 수 있는 제어권한 없음.
3. 제한된 이식성 국제표준이 없다. 종속적 솔루션 구축을 할수밖에 없고, 클라우드 이동이 어려운 락인(lock-in)효과가 발생가능하다.
4. 과도한 비용 지출 - 초기비용에는 유리하나 5년이상 장기간 사용시 온프레미스가 저렴한 경우도 발생. - 클라우드 이동비용이 운영비용상회 가능성
5. 규제와 법적 이슈 2015년 클라우드 컴퓨팅 발전 및 이용자 보호에 관한 법률 제정. (= 클라우드 보급 원인) -국가기관 등은 클라우드 컴퓨팅을 도입하도록 노력하여야한다. 정부는 '국가정보화 기본법' 에 따른 국가 정보화 정책이나 사업추진에 필요한 예산을 편성할 때에는 클라우드 컴퓨팅 도입을 우선적으로 고려하여야한다. - 이용자는 클라우드 컴퓨팅 서비스 제공자에게 이용자 정보가 저장되는 국가의 명칭을 알려주도록 요구할 수 있다.
>> 퍼블릭 클라우드의 경우 데이터, 비지니스로직 저장되는 실제 위치를 몰라서 개인정보 보호, 데이터 저장소 정책에 관한 규제와 관련 심각한 법적 문제가 될수 있다. 예를 들어 한국과 영국은 자국민의 개인정보는 반드시 그 국가 내에서 보관되어야 한다고 법적명시 또한 국가사이버안전관리규정, 정보보안 기본지침 등에서 클라우드 환경을 적용할 수 없는 업무 또는 기능을 명시, 심각한 법적이슈 발생가능성이 있다. 따라서 클라우드 적용의 정도와 범위에 대해 계획단계부터 명확히 할 필요가 있다.
도입효과
1. 비용절감 : 구축, 인력 비용 2. 시스템 도입과정 단축 3. 구축 , 운영에서 발생하는 문제에서 자유로운 환경 제공- 해외운영
관련기술
1. 클러스터링 기술 클러스터 컴퓨터 : 고속 네트워크로 동기화되어 단일 시스템인것처럼 동작하는 독립적인 it리소스그룹 클러스터링 기술 : 이중화와 장애 극복 기능이 내장되어 가용성과 신뢰성을 갖춘 클러스터 컴퓨터 구성하는데 사용하는 기술 전통적으로 H/W와 OS 기반에서 구성가능, 현대에는 이기종(heterogeneous) 환경에서도 구성가능 2. 그리드 컴퓨팅 슈퍼 가상 컴퓨터, 컴퓨팅 리소스가 플랫폼 상에서 논리적 리소스 풀로 등록되어 풀에 포함된 리소스가 집합적으로 고성능 분산 그리드를 제공하는 기술 클러스터링과 다르게 결합성이 매우 작고, 서로 다른 기종 리소스들이 물리적으로 분산되어 있다. 네트워크 접근, 리소스 풀링, 확장성, 탄력성 측면 영향 3. 가상화 virtualization 컴퓨터 환경상 가상 인스턴스를 만드는 데 사용되는 기술. 호스트가상화, 하이퍼바이저 가상화, 컨테이너 가상화 4. 서버리스 컴퓨팅 기술 서버리스 컴퓨팅(서버를 생성, 구성, 유지관리 하지 않고, 애플리케이션 코드 실행 할수있는 환경) 서버리스 모델은 각 기능이 실행 할 때 사용하는 IT 리소스의 처리 시간에 대해서만 지불.
관련기술_3. 가상화
1. 호스트 가상화 H/W -위-> Host 운영체제 -위-> 가상화S/W -위-> Guest 운영체제 장점 : 구동중인 시스템 변경없이 가장 간편하게 구성, 단점 : CPU나 메모리 사용이 증가하는 오버헤드 발생
2. 하이퍼바이저(hypervisor) 가상화 H/W -위-> 하이퍼바이저(가상화전담 s/w) -> 게스트 운영체제 장점 : Host OS 설치 없이 하이퍼바이저가 직접 H/W제어해서 불필요한 CPU, 메모리 사용 줄어든다. 단점 : 여전히 애플리케이션 구동 환경별로 게스트 OS 가 설치 작동, 오버헤드 발생
3. 컨테이너 가상화 H/W -위-> Host OS -위-> 컨테이너 엔진 컨테이너기술(애플리케이션, 구동환경 격리 기술)로 애플리케이션 환경제공 컨테이너기술은 초기에 소프트웨어개발환경, 구동환경 차이로 인한 예상치 못한 오류방지를 위해 등장 애플리케이션과 구동환경만을 가상화 함으로써 가상머신에 비해 훨씬 가볍고 효율적이며 안정적서비스
* 그리드 : 격자무늬
격자무늬
* on-premise:현존하는
premise : 전재
* IDC
internet data center 기업의 전산시설을 위탁 관리하는 곳
실습 by 한국마이크로소프트 김영욱 부장
하이브리드는 일반적인 전략
Public 22% Hybird 69% Private 3%
고객 관리 범위 제공자 관리
Enterprise IT =Legacy It = 온프라미스 : Application, Security, Database, Operating Systems, Virtualization, Servers, Storage, Networking, DataCenters Infrastructure As A Service = IaaS : Application, Security, Database, Operating Systems, Virtualization, Servers, Storage, Networking, DataCenters Platform As A Service = PaaS : Application, Security, Database, Operating Systems, Virtualization, Servers, Storage, Networking, DataCenters Software As A Service = SaaS : Application, Security, Database, Operating Systems, Virtualization, Servers, Storage, Networking, DataCenters
일반적으로 PaaS가 저렴하게 쓰기 쉬운데 IaaS는 고집하는 특별한 서비스가 필요할때 사용. SaaS ex) offce365
클라우드 제공모델
Comute : IaaS Web & Mobile : PaaS : 자체로 AutoScaling 가능 Data & Storage : PaaS Analytics Internet of Things & Intelligence Media & CDN Identity & Access Management
Data & Storage : Azure의 경우 기본 3중화 , 파일 입력시 > 복사본 3개생김 > 지역복제시 페어에 3개 기본 6중화 까지 AutoScaling : 사용자를 보고 자동으로 빌려주고 회수함
1. 단방향 암호화 : 역으로 변환하는 것이 불가능 2. 비밀키 암호화 = 대칭키 암호화 = symmetric-key algorithm : 비밀키를 사용 암호화와 복호화 하는 과정, 송수신자 모두 동일한 암호화 키 3. 공개키 암호화 = public-key encryption =비대칭키(Asymmetric key) 암호화 : 공개키 + 개인키 암호화는 송수신자에게 공개된 공개키를 사용하여 암호화 복호화는 개인키를 가진 사람만 할 수 있다. 비밀키 암호화 방식보다 처리가 느림. 실제 비밀키, 공개키 혼합사용
HMAC
=hash-based message authentication code= keyed-hash message authentication code = 해시함수와 기밀 암호화 키를 수반하는 특정한 유형 메시지 인증코드 ex)HMAC-SHA256 : SHA256(암호화해시함수) HMAC-X(Mac 알고리즘) 사용. https://ko.wikipedia.org/wiki/HMAC
MAC
=맥=message authentication code = 메시지 인증코드 데이터가 변조(수정, 삭제, 삽입) 되었는지 검증할 수 있도록 덧붙이는 코드. MAC 의 생성과 검증은 반드시 비밀키를 사용하여 수행해야만 한다. 메시지 인증 코드 예 1. SWIFT : 국제 은행간 통신협회 2. IPsec : IP프로토콜에 보안기능첨가 3. SSL/TLS https://m.blog.naver.com/wnrjsxo/221719726759
SSL
Secure Sockets Layer = 웹 브라우저 보안 프로토콜 3.0을 표준화 한것이 TLS 1.0 (SSL, TLS 같은의미사용) TLS = Transport Layer Security
보안 1. 기밀성 : 훔처도 볼수없다 2. 무결성 : 위변조 여부 확인 3. 인증 : 초기설정 인증서를 통해 신뢰개체 인증.
TLS 사용하는 어플리케이션 프로토콜 HTTPS, FTPS
TLS 세부 프로토콜 1. Handshake : 양쪽 연결 확인 프로토콜 2. Change Cipher Spec : 보안 파라미터(대칭키 알고리즘변경시) 변경 적용시 사용 프로토콜 3. Alert : 오류전송 프로토콜 4. Application Data : 실제 데이터 전송 사용 프로토콜 5. Record : 협상된 보안 파라미터 이용 암복호화, 무결성 등 수행 프로토콜
1. TLS 1.0 : 1999년, SSL 3.0의 업그레이드 버전 공개 3.0의 대부분취약점해결. Window XP, vista, windws server 2003 에서 지원하는 마지막버전 2. TLS 1.1 , DTLS 1.0 2006년 암호 블로 체인공격에 대한 방어, IANA 등록 파라메터지원추가. 3. TLS 1.2 , DTLS 1.1 2008년, SHA2를 사용하도록 변경 4. TLS 1.3, DTLS 1.2 2018년, 서버에서 인증서를 암호화 하여 전달, 최초 연결시 암호화 통신 개시 절차 간소화, 오래된 암호화 기술 폐기 https://namu.wiki/w/TLS
지구상에 존재하는 모든 개체들의 개념, 사상, 명령 등을 표현한 것으로 인간 또는 기계가 감지할 수 있도록 숫자, 문자, 기호 등을 이용하여 형식화한 것.
데이터베이스
데이터베이스 바크만 : 어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이터의 집합 C.J.Date : 데이터 베이스는 특별한 기업의 응용 시스템에서 사용하기 위해서 저장된 집합 DBMS R.Elmasri : DBMS는 사용자에게 데이터베이슬르 생성하고 유지할 수 있게 해주는 프로그램 집합
데이터베이스 조건 4가지
1. 통합된 데이터(Integrated data) : 동일데이터 중복 안되있음. 완전히 배제된것이 아니고 최소한의 중복, 통제된 중복을 허용 2. 저장 데이터(Stored data) : 컴퓨터가 접근 가능한 자기테이프와 같이 저장 매체에 저장된 데이터 3. 운영데이터(Operational data) : 어떤 한 조직의 고유 기능을 수행하기 위해 반드시 필요한 데이터 4. 공용데이터(Shared data) : 어느 한 조직의 여러 응용프로그랩들이 공동으로 소유하고 유지하며 이용하는 데이터
데이터베이스 특성
1. 실시간 접근성(Real-time accessibility) 2. 계속적인 변화(Continuous evolution) 3. 동시공유(Concurrent sharing) 4. 내용에 의한 참조(Content reference) : 레코드 위치, 주소가 아닌 사용자 요구 데이터값에 의해 참조
모델
1. 계층 데이터모델(Hierachical Data Model)
주요용어
개체(entity) 애트리뷰트(attribute) 도메인(domain) : 한 속성이 취할 수 있는 모든 값 총칭
Net Address Translation : 네트워크 주소변환 1) 내부 서로 통신 안됨, 내부에서 외부로 통신 나가기는함, 포트포워딩전에 접근불가.
아키텍처 : 인터넷 -> 라우터 (KT, LG, SK 에서 설치) -(공인IP)-> 공유기(DHCP) (192.168.0.1/24) ; NAT 기능사용 -> HOST1 (192.168.0.2/24) ->NAT(VirtualBox)[VM1(10.0.2.15/24),VM2(10.0.2.15/24),VM3(10.0.2.15/24)] -> HOST2 (192.168.0.3/24) -> HOST3 (192.168.0.4/24)
1. VirtualBox 내 VM 동일 IP 2. VirtualBox 내부에서 서로 통신안됨.
nmcli d >> Network Manager Command-line interface nmcli d show enp0s3
gateway : 나가는 출구 : 10.0.2.2 : 내부에서 외부는 나갈수 있다.
NAT 네트워크
Net Address Translation 네트워크: 네트워크 주소변환 네트워크 1) 내부(guest) 서로 통신가능, guset 끼리 하나 네트워크로 묶여있음, 외부는 포트포워딩 해야 통신가능 2) DHCP 서버에서 IP 할당받음, VirtualBox 와 별도
아키텍처 : 인터넷 -> 라우터 (KT, LG, SK 에서 설치) -(공인IP)-> 공유기(192.168.0.1/24) -> HOST1 (192.168.0.2/24) ->NATNetwork(VirtualBox)[VM1(10.0.2.5/24),VM2(10.0.2.6/24))]+Gateway -> HOST2 (192.168.0.3/24) -> HOST3 (192.168.0.4/24) +DHCP(10.0.2.3/24)
설정 1. 네트워크 그룹생성 : 파일 > 설정 > 네트워크 추가. myNetwork , 192.168.100.0/24, DHCP 지원, 2. NAT 네트워크 설정: 생성VM > 설정 > 네트워크 > 어댑터1탭 > 다음에 연결됨 : Nat 네트워크 > 이름 : myNatwork
확인 nmcli d show emp0s3
** 방화벽 있으면 테스트시 추가 설정 필요
Bridged Networking
스위치와 같은기능을 한다. 1. 유무선 공유기에서 IP 할당. 하나의 네트워크처럼 사용 > HOST3 -> 유무선공유기 -> HOST1-> VM1 접근가능
아키텍처 : 인터넷 -> 라우터 (KT, LG, SK 에서 설치) -(공인IP)-> 공유기(192.168.0.1/24) -> HOST1 (192.168.0.2/24) ->Bridged(VirtualBox)[VM1(10.0.2.5/24),VM2(10.0.2.6/24))] -> HOST2 (192.168.0.3/24) -> HOST3 (192.168.0.4/24)
호스트 전용 어댑터
Host-Only 1. HOST, Guest 간 통신은 되나 Guest가 인터넷이 안된다. 2. 내부 네트워크는 단절??
아키텍처 : 인터넷 -> 라우터 (KT, LG, SK 에서 설치) -(공인IP)-> 공유기(192.168.0.1/24) -> HOST1 (192.168.0.2/24) ->HOST(VirtualBox)[VM1(10.0.2.5/24),VM2(10.0.2.6/24))] -> HOST2 (192.168.0.3/24) -> HOST3 (192.168.0.4/24)
1. root 로그인 aws root 사용> $ sudo -s 2. httpd (아파치) 서버 설치 $yum install httpd -y 3. 아파치 실행 $service httpd start Redirecting to /bin/systemctl start Redirecting to /bin/systemctl start httpd.service httpd.service 4. 부팅시 프로그램 등록 $systemctl start httpd.service $chkconfig httpd on 5. 접속 페이지 생성 $cd /var/www/html/ $vi index.html <html><h2>Hello Server</h2></html>