여러가지 테스트 결과  블로그는 상단에 2개의 애드센스가 있을때 가장 좋은 클릭율이 나오고 있습니다. 특히 모바일쪽 클릭도 무시할 수가 없는 수준입니다.


보통 상단에 1개의 광고를 넣고 모바일에서도 보이게 하려면, 상단 애드센스를 티스토리 본문에 서식을 이용해서 넣는 방법을 사용합니다. 하지만 이 경우는 상단에 1개의 광고를 넣었을때 효과가 좋은 블로그에서나 가능한 것이고, 저처럼 상단에 2개를 넣어야 효과가 좋을때는 사용이 힘들죠.


일반적으로 상단에 2개의 광고를 배치하는 방식을 보면 본문이 아닌 스킨에 테이블을 이용해서 2개를 넣는 방법을 사용합니다. 하지만 이렇게 하면 모바일에서는 애드센스 광고가 나오지를 않습니다.


PC에서만 애드센스 2개를 보여주게 하는 코드. 모바일에서는 애드센스가 보이지 않음.


<div> 

<TABLE border="0" cellspacing="4" cellpadding="4" width="100%">

<TR>

       <TD width="50%">

           좌측 애드센스 광고 코드 넣을 곳

       </TD>

       <TD align = "left" width="50%">

          우측 애드센스 광고 코드 넣을 곳

       </TD>

</TR>

</TABLE>

</div>

<br>


그러나 지금부터 알려드릴 방법을 사용하면, PC에서는 2개의 광고가 나오고 모바일에서는 1개의 광고가 보이게 됩니다. 현재 제 블로그에 적용되어 있는 방식입니다.


그럼 지금부터 시작해보겠습니다.


티스토리 상단에 PC와 모바일 모두 보일 수 있는 애드센스 광고 2개 넣기


티스토리 관리자-꾸미기-HTML/CSS 편집으로 가서 우측창의 skin.html 에서 ##_article_rep_desc_## 을 검색합니다.

그리고 아래 그림에서 노랗게 표시된 부분, 즉 ##_article_rep_desc_## 의 바로 윗부분에 다음 코드를 넣습니다. 애드센스 광고 코드 넣을 부분에는 각자 자신의 애드센스 코드를 넣어주시면 됩니다.




<!-- 상단 우측 애드센스 광고 시작 -->

<div style="float:right; margin:0px 0px 10px 3px">

   애드센스 스크립트 넣을 부분

</div>

<!-- 상단 우측 애드센스 광고 종료 -->


이렇게 하면 2개의 애드센스중 우측에 들어갈 애드센스가 만들어진 것입니다. 자 이제 두번째로 좌측에 들어갈 광고를 배치해 보겠습니다. 좌측에 들어갈 애드센스는 모바일과 PC 모두에서 보여집니다.


티스토리 관리자-글쓰기에 들어가서 새 글을 작성하는데 양식을 서식으로 지정합니다. 그리고 HTML에 체크를 합니다.

이제 다음 코드를 넣습니다. 애드센스 광고 코드 넣을 부분에는 각자 자신의 코드를 넣어주시면 됩니다.




<!-- 상단 좌측 애드센스 광고 시작 -->

<div style="text-align:center; MARGIN: 0px 2px 10px 0px;">

       애드센스 광고 코드 넣을 부분

</div>

<!-- 상단 좌측 애드센스 광고 종료 -->


글 복사가 안되시는 분들을 위해 코드를 다운로드 해서 사용할 수 있도록 첨부합니다.




자 이제 글을 작성할때마다 가장 윗부분에 서식을 이용해서 입력을 해주시면 PC에서 보면, 제 블로그에서 보이는 것 처럼 2개가 보이고, 모바일에서는 1개의 광고가 노출이 됩니다. 서식을 넣는 방법은 우측 하단에 있는 서식을 클릭한 후에 작성한 서식 제목을 클릭해주면 (여기에서는 본문 상단 광고) 글쓰는 곳의 커서가 있는 위치에 광고가 삽입 됩니다.



정리를 해보면 스킨에 넣은 우측 애드센스는 PC에서만 보이고, 서식을 이용해서 본문에 삽입한 좌측 애드센스는 PC와 모바일 양쪽에서 보이게 됩니다. 따라서 PC에서 접속을 하던 모바일에서 접속을 하던간에 모두 애드센스 광고를 노출 시켜줄 수가 있게 됩니다. 샘플을 보시려면 모바일에서 제 블로그에 들어와보시면 곧바로 확인이 가능하실겁니다.





발생가능한 문제 해결


그런데 가끔 좌측 배너가 한칸 정도 내려가서 보일때가 있습니다. 이는 글을 작성한후에 <BR>태그가 저절로 들어가서 생기는 문제로, 이런 문제가 발생하면 문제가 있는 글에서 HTML 체크를 한 후에, 소스의 가장 윗 부분에 들어가 있는 잘못된 <BR> 태그를 확인해서 삭제해 주시면 해결이 됩니다.




자 이제 코드 한방으로 PC와 모바일 모두에서 애드센스를 노출시키는 방법에 대해 알아봤습니다. 애드센스를 사용하는 블로그의 경우에는 블로거가 임의로 조절해서 수익을 증가시킬 수 있는 것은, 스킨과 애드센스 위치 정도뿐입니다. PC와 모바일 모두에서 애드센스를 노출 시켜서 조금이라도 더 많은 수익 얻어가시기 바랍니다~



출처: http://www.nextstep.co.kr/239 [멍멍대왕의 IT 놀이터]

블로그 이미지

낭만가을

,


'프로그래밍 > 디자인패턴' 카테고리의 다른 글

디자인패턴요약  (0) 2018.06.11
디자인 패턴 요약  (0) 2018.06.11
쉽게 배우는 Template 패턴  (0) 2017.01.29
쉽게 배우는 Builder 패턴  (0) 2017.01.29
쉽게 배우는 Adapter 패턴 (아답터 패턴)  (0) 2017.01.29
블로그 이미지

낭만가을

,

GoF(Gang of Four)에서는 23가지 디자인 패턴을 3가지 유형으로 분류합니다.

A. Creational Pattern

  • 객체를 생성하는데 관련된 패턴들
  • 객체가 생성되는 과정의 유연성을 높이고 코드의 유지를 쉽게 함

B. Structural Pattern

  • 프로그램 구조에 관련된 패턴들
  • 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들

C. Behavioral Pattern

  • 반복적으로 사용되는 객체들의 상호작용을 패턴화 해놓은 것들


주요 디자인 패턴만 정리했습니다.

1. 어댑터 패턴(Adapter Pattern)

  • 용도
    • 어떤 클래스를 우리가 바로 사용할 수 없을 때가 있다. 다른 곳에서 개발한 클래스고, 우리가 그것을 수정할 수 없을 때, 우리에게 맞게 중간에 변환할 역할을 해줄 수 있는 클래스가 필요한데, 그것이 바로 어댑터이다.
  • 사용 방법
    • 상속
    • 위임: 어떤 메소드의 실제 처리를 다른 인스턴스의 메소드에게 맡기는 방법
  • Class Diagram

2. 프로토 타입 패턴(Prototype Pattern)

  • 용도
    • 미리 만들어진 객체를 복사해서 객체를 생성하는 방식
    • 객체를 많이 만들어야 할 경우, 객체 생성에 드는 코딩 분량을 현저히 줄일 수 있다
    • 클래스로부터 객체를 생성하기 어려운 경우(그래픽 에디터에서 사용자의 마우스 클릭으로 생성되는 객체들)
  • 사용 방법
    • 모형(Prototype) 인스턴스를 등록해 놓고, 등록된 인스턴스를 복사(clone())해서 인스턴스를 생성함
  • Class Diagram

3. 싱글톤 패턴(Singleton Pattern)

  • 용도
    • 시스템 내부에 1개의 인스턴스만 생성하고 싶은 경우
      • 컴퓨터 자체를 표현한 클래스
      • 현재 시스템 설정을 표현한 클래스
  • 사용 방법
    • 생성자를 private으로 선언하고, 해당하는 생성자를 클래스 내부에서만 호출함
  • Class Diagram

4. 컴포지트 패턴(Composite Pattern)

  • 용도
    • 틀과 내용물을 같은 것으로 취급하고 싶을 때(디렉토리 내부에는 디렉토리와 파일이 있지만, 둘 모두 디렉토리 내부에 있는 Element로 표현하고 싶을 때)
  • 사용 방법
    • Composite클래스가 Component를 포함하도록 함
  • Class Diagram// Composite이 Component를 포함하고 있음

5. 데코레이터 패턴(Decorator Pattern)

  • 용도
    • 데코레이팅한 결과물을 다시 내용물로 보고 그것을 다시 데코레이팅하기 위함(지속적으로 장식을 추가할 때, 문자열 주위에 여러 유형의 border 장식을 추가할 때)
  • 사용 방법
    • Border 클래스가 다시 Display를 포함함(컴포지트랑 비슷)
  • Class Diagram// Decorator가 Component를 포함하고 있음

6. 퍼사드 패턴(Facade Pattern)

  • 용도
    • 대규모 프로그램에는 서로 관련있는 클래스들이 많음 -> 복잡하게 얽혀있는 클래스들을 정리해서 높은 레벨의 인터페이스(API)를 제공(간단하게 접근가능)
    • 여러 클래스들을 직접 제어하지 않고 ‘창구(facade)’에 요구함
    • 결과적으로 구현시에 간단한 인터페이스를 사용할 수 있게
  • 사용 방법
    • 여러 클래스들의 기능들을 묶은 Facade 클래스를 만들고 Facade 클래스에 접근함
  • Class Diagram

7. 프록시 패턴(Proxy Pattern)

  • 용도
    • Proxy는 대리인이라는 의미, 시간이 많이 걸리는 작업을 할 때 사용함
    • 시간이 많이 걸리는 작업을 할 때, 대리인이 할 수 있는 일은 대리인이 하고 할 수 없는 일(Heavy job)은 본래의 클래스에게 넘겨줌
      • 시스템 초기화는 필요하지 않은 기능까지 초기화하려고 하면 많은 시간이 필요한데, 그 기능을 Proxy에 위임함
      • 프린트 프로그램에서 실제 프린터를 실행하는 과정에 시간이 오래 걸리기 때문에 그 과정에 있는 일들을 Proxy에 위임함
  • 사용 방법
    • Proxy클래스에 우선 일을 위임하고, 그 뒤에 RealSubject가 해야할 일은 넘겨주는 방법으로 사용
  • Class Diagram

8. 옵저버 패턴(Observer Pattern)

  • 용도
    • 관찰 대상의 상태가 변화했을 때 관찰자에게 통지하는 패턴
    • 상태 변화에 따른 처리를 기술할 때 효과적으로 활용(MVC패턴에서 Model과 View의 분리 등)
  • 사용 방법
    • Observer 클래스에 상태 변화를 알려주고, Observer는 다시 그 변화에 맞는 결과를 나타냄
  • Class Diagram

  • 구현 및 Code

  • Observer Class
public interface Observer {
public abstract void update(NumberGenerator generator);
}
  • NumberGenerator
import java.util.Vector;
import java.util.Iterator;
public abstract class NumberGenerator {
private Vector observers = new Vector(); // Observer들을 보관
public void addObserver(Observer observer) { // Observer를 추가
observers.add(observer);
}
public void deleteObserver(Observer observer) { // Observer를 삭제
observers.remove(observer);
}
public void notifyObservers() { // Observer에 통지
Iterator it = observers.iterator();
while (it.hasNext()) {
Observer o = (Observer) it.next();
o.update(this);
}
}
public abstract int getNumber(); // 수를 취득한다.
public abstract void execute(); // 수를 생성한다.
}
  • RandomNumberGenerator
import java.util.Random;
public class RandomNumberGenerator extends NumberGenerator {
private Random random = new Random(); // 난수발생기
private int number; // 현재의 수
public int getNumber() { // 수를 취득한다.
return number;
}
public void execute() {
for (int i = 0; i < 20; i++) {
number = random.nextInt(50);
notifyObservers();
}
}
}
  • DigitObserver
public class DigitObserver implements Observer {
public void update(NumberGenerator generator) {
System.out.println("DigitObserver:" + generator.getNumber());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
  • GraphObserver
public class GraphObserver implements Observer {
public void update(NumberGenerator generator) {
System.out.print("GraphObserver:");
int count = generator.getNumber();
for (int i = 0; i < count; i++) {
System.out.print("*");
}
System.out.println("");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
  • Main
public class Main {
public static void main(String[] args) {
NumberGenerator generator = new RandomNumberGenerator();
Observer observer1 = new DigitObserver();
Observer observer2 = new GraphObserver();
generator.addObserver(observer1);
generator.addObserver(observer2);
generator.execute();
}
}

9. 커맨드 패턴(Proxy Pattern)

  • 용도
    • 실행하고 싶은 메소드의 History 관리(우리가 Ctrl + z를 눌러서 실행취소를 한다고 할 때, History를 저장할 수 있어야 가능함)
    • 매크로 명령을 정의하고자 할 때
    • 동일한 명령을 반복해서 실행할 때
  • 사용 방법
    • 명령어를 객체에 캡슐화해 저장함(주로 스택으로 저장)
  • Class Diagram

10. 책임 연쇄 패턴(Chain of Responsibility Pattern)

  • 용도
    • 어떤 요구가 발생했을 때, 그 요구를 처리할 Object를 바로 결정할 수 없을 때, 다수의 Object를 Chain으로 연결해 차례로 방문하면서 목적에 맞는 Object를 결정함(내가 못하면 남한테 전가시킴)
    • 요구하는 측과 처리하는 측의 연결을 약화시킴(Coupling을 낮추는 역할을 함)
  • 사용 방법
    • Handler객체가 문제를 해결했는지 확인하면서 계속해서 가능한 객체를 연결해 줌
  • Class Diagram

11. 중재자 패턴(Mediator Pattern)

  • 용도
    • 모든 행동을 수행하기 전에 ‘중재자 객체’의 결정이 있어야 하고, 중재자 객체로 프로그램이 수행됨
    • 각 객체들은 중재자만 알게됨
  • 사용 방법
    • 각 객체와 중재자를 연결함
  • Class Diagram

12. 방문자 패턴(Visitor Pattern)

  • 용도
    • 데이터와 메소드를 구분하기 위함
    • 많은 데이터에 여러 가지 유형의 처리를 수행할 경우 활용
  • 사용 방법
    • 데이터 구조 내부를 traversal하는 ‘visitor’ 클래스로 그 클래스에게 데이터의 처리를 맡김, 새로운 처리를 추가할 때는 새로운 visitor를 생성함
  • Class Diagram

13. 팩토리 메소드 패턴(Factory Method Pattern)

  • 용도
    • Instnce 작성을 하위 class에게 위임
      • Instance를 만드는 방법은 상위 class에서 결정하지만, 구체적인 class명을 결정하지 않음
    • Instance 생성을 위한 Framework과 실제 Instance를 생성하는 Class를 분리함
    • 객체를 만드는 공장을 만드는 패턴 -> 결합도가 낮아질 수 있다
  • 사용 방법
    • Factory객체를 만들고 Factory에서 객체들을 생성한다
  • Class Diagram
*****


'프로그래밍 > 디자인패턴' 카테고리의 다른 글

디자인패턴 요약  (0) 2018.06.11
디자인 패턴 요약  (0) 2018.06.11
쉽게 배우는 Template 패턴  (0) 2017.01.29
쉽게 배우는 Builder 패턴  (0) 2017.01.29
쉽게 배우는 Adapter 패턴 (아답터 패턴)  (0) 2017.01.29
블로그 이미지

낭만가을

,

디자인 패턴(Design Pattern) 이란

디자인 패턴이란 프로그래밍 할때에 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어 
재이용하기 편리하게 만든 일정한 패턴이라고 생각하시면 됩니다. 설명이 좀 어렵나요? 위키백과에는 다음과 같이 정의하고있습니다.


말하자면 구조적인 문제를 해결하는 방식을 이름을 붙여서 재이용하기 좋은 형태로 정리해둔 것이죠.


오늘 알아볼 GoF의 디자인 패턴은 위에도 있다시피 네명의 컴퓨터과학 연구자들이 소개한 대표적인 디자인패턴 방식입니다.


물론 아 대충 이런것이구나 는 이해가 금방될지라도 실제로 프로그래밍에 사용하려면 어려운점이 많아짐으로 

우선 대략적으로 설명을 해두고 나중에 하나씩 따로 포스팅하도록 하겠습니다.


디자인패턴을 사용할 때의 장,단점

장점
–개발자 간의 원활한 의사소통
–소프트웨어 구조 파악 용이
–재사용을 통한 개발 시간 단축
–설계 변경 요청에 대한 유연한 대처

단점
–객체지향 설계/구현 위주로 사용된다.

–초기 투자 비용 부담.


디자인패턴의 종류

1. 생성패턴

–Abstract Factory (추상 팩토리)  
 -동일한 주제의 다른 팩토리를 묶어 준다.
–Builder
 -생성(construction)과 표기(representation)를 분리해 복잡한 객체를 생성한다
–Factory Method
 -생성할 객체의 클래스를 국한하지 않고 객체를 생성한다.
–Prototype (원형)
 -기존 객체를 복제함으로써 객체를 생성한다.
–Singleton (단일체)
 -한 클래스에 한 객체만 존재하도록 제한한다.

2. 구조패턴

–Adapter (적응자)
 -인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌운다.
–Bridge (가교)
 -추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있다.
–Composite (복합체)
 - 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있다.
–Decorator (장식자)
 -기존 객체의 매서드에 새로운 행동을 추가하거나 오버라이드 할 수 있다.
–Façade (퍼사드)
 -많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공한다.
–Flyweight (플라이급)
 -다수의 유사한 객체를 생성·조작하는 비용을 절감할 수 있다.
–Proxy (프록시)
 -접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공한다.

3. 행위패턴

–Chain of Responsibility (책임연쇄)
 -책임들이 연결되어 있어 내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조
–Command (명령)
 -위의 명령어를 각각 구현하는 것보다는 위 그림처럼 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 
  서브 클래스가 선택되어 실행하는 것
–Interpreter (해석자)
 -문법 규칙을 클래스화한 구조를 갖는SQL 언어나 통신 프로토콜 같은 것을 개발할 때 사용
–Iterator (반복자)
 -반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다.
–Mediator (중재자)
 -클래스간의 복잡한 상호작용을 캡슐화하여 한 클래스에 위임해서 처리 하는 디자인 패턴
–Memento (메멘토)
 -Ctrl + z 와 같은 undo 기능 개발할 때 유용한 디자인패턴. 클래스 설계 관점에서 객체의 정보를 저장
–Observer (감시자)
 -어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것
–State (상태)
 -동일한 동작을 객체의 상태에 따라 다르게 처리해야 할 때 사용하는 디자인 패턴
–Strategy (전략)
 -알고리즘 군을 정의하고 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 해준다.
–Template Method
 -상위 클래스에서는 추상적으로 표현하고 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
–Visitor (방문자)
 -각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 visitor 클래스로 만들어놓고 해당 클래스의 메서드가 
  각 클래스를 돌아다니며 특정 작업을 수행하도록 하는 것



참고 사항

GoF_의_디자인_패턴.pdf

       GoF_의_디자인_패턴.pdf



'프로그래밍 > 디자인패턴' 카테고리의 다른 글

디자인패턴 요약  (0) 2018.06.11
디자인패턴요약  (0) 2018.06.11
쉽게 배우는 Template 패턴  (0) 2017.01.29
쉽게 배우는 Builder 패턴  (0) 2017.01.29
쉽게 배우는 Adapter 패턴 (아답터 패턴)  (0) 2017.01.29
블로그 이미지

낭만가을

,

​저는 집에서 인터넷으로 돈버는 방법 에 대해 1000시간 이상을 연구하고 직접 테스트했습니다. 세상에 숨어있는 수많은 꼼수들도 접해봤고, 다단계도 접해봤고, 단순히 용돈정도 벌수 있는 방법과 생계를 유지할 정도의 돈을 벌수 있는 방법까지 모두 연구하고 공부하고 테스트해봤습니다. 지금도 현재 진행중입니다.

​만약에, 이 곳에서 도박이나 다단계, 추천인, 초기가입비를 요구하는 불법적인 방법들을 찾고 계시다면 지금 바로 종료버튼을 클릭해서 나가주시기 바랍니다. 그런 방법에 대해서는 일절 언급하지 않겠습니다. 그런 모든 방법은 장기적이지 못하고 심지어 몇백만원, 몇천만원씩 손해보고나서야 정신을 차리는 경우가 대부분입니다. 제가 해드릴수 있는 조언은 담배처럼 일단 시작도 하지 말라는 것입니다.

하지만! 아래에 해당되는 분이라면 이 글은 당신을 위한 입니다.

저는 대학생인데..

  • 시간 상관없이 일하면서 돈벌고 싶어요.
  • 취업은 해야 겠고, 돈은 벌어야 겠고, 정말 돈버는 방법이 궁금해요.
  • 남는 시간에 용돈좀 벌고 싶은데 좋은 방법좀 알려주세요.

저는 대학도 안나왔고, 경험도 별로 없는데..

  • 그래도 돈을 벌수 있는 일이라면 진짜 열심히 할수 있어요!

저는 살림하는 주부인데..

  • 생활비가 부족해서 돈이 더 필요해요..
  • 애들 사교육비 때문에 돈이 딸려서 어떻게든 부수입을 만들어야 되요..

저는 이런게 궁금해요!

  • 합법적으로 안전하게 인터넷으로 돈버는 방법 이 궁금해요!
  • 블로그로 돈버는 방법이 궁금해요!
  • 블로그 말고도 어떤 아이템이 있는지 궁금해요!
  • 초기비용 없이 돈버는 방법도 있는지 궁금해요!
  • 얼마나 쉽게 돈을 벌수 있는지 궁금해요!
  • 얼마정도까지 벌수 있는지 궁금해요!
  • 어떻게 버는지 그 원리를 속시원하게 알고 싶어요!
  • 인터넷으로 돈나무 사이트를 만드는 방법이 궁금해요!
  • 인터넷으로 사업을 시작하고 싶은데  어떻게 시작해야 할지 모르겠어요!

저는 이런걸 정말 정말 원해요..!

  • 일을 하지 않고도 자동으로 들어오는 수입원을 만들고 싶어요!
  • 나만의 온라인 비즈니스( = 창업, 사업 )로 성공하고 싶어요!

저는 이런 생각을 갖고 있어요!

지금은 내가 학력도 안좋고, 스펙도 별로 안좋을지 모르지만, 정말 노력해서 내가 원하는 인생을 살겠어!

​특히 이런분을 위한 글입니다!

  • 나는 지금 가진게 별로 없지만 누가 뭐라해도, 노력하면 언젠가는 내가 원하는 인생을 살수 있다고 나 자신을 굳게 믿는 분!
  • 어딘가에 소속되지 않고 나만의 무기로 경제적 자립과 언제 어디서든지 하고 싶은걸 할수 있는 자유를 누리고 싶은 분!

죄송합니다. 이런분들은 정말 잘못 찾아오셨습니다.

쉽게 돈버는 방법 어디 없나? 꼼수나 우회해서 돈버는 방법 없나? 그냥 뒹굴뒹굴해도 돈이 어디서 굴러들어왔으면 좋겠다.. 라고 생각하시는 분은 잘못 찾아오셨습니다.

제 글을 통해 빠르게 돈을 버는 방법은 이해하실수 있지만 별다른 노력을 하지 않고 손쉽게 돈버는 방법은 알수 없습니다. 도박이나 불법적인 행위, 불법 다단계 말고는 없습니다.

각각의 방법별로 배우게 될 내용들

  • ​어떻게 돈을 버나요?
  • 현실적으로 벌수 있는 수익
  • 얼마나 쉽게 벌수 있나?( 부업으로 딱인지? 전업을 해도 되는지? )
  • 얼마나 빨리 벌수 있나?( 첫수익은 언제 발생하나요? )
  • 부동산 임대수익처럼 자동으로 만들수 있는지 ( 돈나무 사이트인가요? )
  • 초기 비용 및 유지 비용 ( 총 투자 비용은 얼마 인가요? )
  • 수익을 만드는데 꼭 필요한 Tools(도구들)
  • 지금 당장 시작하는 방법

​아래 목차에서 궁금한 부분의 제목을 클릭하시면 바로 읽을수 있습니다.

1번째 인터넷으로 돈버는 방법 
- 재능마켓 -

첫번째로 알려드릴 '인터넷으로 돈버는 방법'은 바로 재능마켓입니다. 재능마켓을 가장 먼저 소개해드린 이유는 바로, 특출난 능력이나 한 분야에 대해 오랜 경험이 없더라도 남녀노소 누구나 쉽고 빠르게 돈을 벌수 있기 때문입니다. 인터넷으로 돈버는 방법 10가지 중에 가장 쉬운 방법이죠.

​재능마켓에서 돈을 버는 방법은 아주 간단한데요. 자신의 재능을 재능마켓 홈페이지에 올리기만 하면 됩니다. 따로 할건 없습니다. 물론 자신은 재능이 없다고 생각하실지도 모르는데요. 누구나 재능 하나쯤은 가지고 있습니다.

재능을 뭔가 뛰어난 것이라고 생각해서 없다고 생각하는 겁니다. 실제로 재능마켓에서는 고민을 들어주기만 하는 것도 재능으로 등록이 되어 있습니다. 남들보다 조금이라도 잘하거나 관심이 있거나 열정이 있는 것 이 모든게 재능이 될수 있습니다.

그리고 재능마켓에서 20%정도를 수수료로 가져가는 구조에요. 그래서 제가 버는 순수익은 판매가격의 80%정도 되는거구요. 너무 많이 가져가는것 아니냐?​ 라고 불만을 가질수도 있는데요.

어짜피 내가 직접 팔려면 처음에는 마케팅 비용을 지출해야 하잖아요. 그래서 그냥 광고비용 대신이구나 라고 생각하시는게 마음 편해요. 어짜피 수익금 수수료가 불만이더라도 판매자가 따진다고 해결될 문제도 아니니깐요.

군대에 입대해서 군대 욕하는 것과 같은 상황이겠죠. 욕한다고 바뀌는건 없어요. 그냥 수수료에 대해서는 불만을 가지지 않는게 정신 건강에 좋을겁니다.

오히려 '불만 가득한 그 마음'때문에 기회를 놓치는 꼴이 될수 있습니다.

근데 더 큰 문제가 있습니다. 이제 재능마켓에 대해서는 어느정도 알겠는데 문제는 판매할만한 재능이 딱히 없다는 겁니다. 근데 정말 팔만한 재능이 없는 걸까요?

제가 확실히 말할수 있지만 재능이 1개도 없는 사람은 이세상에 절대 없습니다. 최소한 1개이상은 누구나 재능을 갖고 있죠.

심지어 어린아이도 마찬가지입니다. 재능마켓에서 판매자들을 실제로 보면 엑셀 잡무나 인터넷에서 자료검색을 대행해주는 판매자도 있어요. 이외에도 고민상담을 들어준다든지, 고양이를 대신 몇일동안 키워준다든지 하는 재능도 있습니다. 정말 이런것도 팔리나? 하는 것들도 팔리고 있습니다. 

예를 들어, 특정 분야에 대해 조언을 해준다거나, ​사진을 찍어주는 것도 재능이 될수 있어요. 어떤 탁월한 능력이 있어야 재능이 되는게 아닙니다. 남들이 보면 재능이 맞는데 나한테는 너무나 당연한 능력이라 재능으로 안보이는것 뿐입니다.

나에게는 사소할지라도 그걸 필요로 하는 사람들이 있고 그걸 남들보다 조금이라도 더 잘한다면 그게 재능인겁니다.

오히려 여기에 기회가 있어요. 많은 사람들이 자신의 재능이 출중한데도 불구하고 '재능'이라는 표현을 쓰면 무슨 천재나 한분야에 오랜 경험이 있어야 한다는 '편견'들이 존재하죠.​

그래서 우리같은 사람들에게 기회가 있는겁니다. 좋은 재능이 있는 사람들도 섣불리 시도를 못하거든요. 바로 '두려움'때문에요.

이게 과연 재능이 될까? 내가 그런 자격이 있는걸까? 다른 사람들이 보기에 우스워보이지 않을까? 별것도 아닌걸 재능이라고 올려놨다고 욕먹으면 어떻게 하지? 이런 두려움들이요. 이외에도 우리 마음속에는 '시도'를 막아서는 수많은 두려움을 만들어내는 '편견'들이 있을껍니다.

이런 두려움들을 깨는데 가장 좋은 방법은 재능을 딱 1개만 올려보라고 말씀드리고 싶습니다.

재능 1개정도 올리는건 누구나 할수 있잔아요. 그러면 분명히 알게 되요. 아 저런 걱정들이 막연한 기우였구나 하는 것을요.

그리고 재능마켓에 내 재능을 올린다고 올릴때마다 돈이 더 들지 않습니다. 그리고 엄청난 준비와 노력을 해야 하는 것도 아니구요. 그냥 지금 내가 지금 갖고 있는 재능을 남들에게 소개해주기만 하면 되는거죠.

구매하면 좋지만 구매안하더라도 손해볼게 전혀 없기 때문에 부수입을 원하거나 온라인으로 수익을 만들고 싶은 분들은 시도해볼만한 가치가 있는거죠.

1. 재능마켓으로 현실적으로 벌수 있는 수익

많은 분들이 인터넷으로 돈버는 세계에 대해 환상을 품고 계신 분들이 많은데요. 제가 좀 더 현실적으로 얼마 정도를 벌수 있는지 알려드리겠습니다.

전문분야가 없는 경우 현실적으로 매달 벌수 있는 수익은 10만단위 이하로 제한됩니다. 보통은 몇만원도 못버는게 현실입니다. 많이 벌어봐야 10만원에서 50만원이 한계입니다.

재능마켓에서 100만 단위 이상의 수익을 창출하고 싶으신 분은 마케팅, 디자인, 비디오 제작, 광고, 홈페이지 제작 분야중 한 분야에 대한 전문지식을 알고 있어야 합니다.

특히 이중에서도 마케팅 분야가 가장 많은 수익을 창출할수 있습니다.

Pro Tip : 수익이 가장 많은 분야는 마케팅 > 디자인 > 광고 > 비디오 제작 > 홈페이지 제작

2. 부동산 임대수익처럼 자동으로 돈이 들어오는 돈나무로 만들수 있는지?

부동산 임대수익처럼 95%정도 자동으로 돈이 들어오게끔 만드는 것은 가능합니다.

잠재고객이 재능마켓에서 구매신청을 하면 그 요청에 대해 판매자는 배송 버튼을 클릭해줘야 되고, 발생한 수익도 출금을 하려면 출금신청을 따로 클릭해서 내 통장으로 보내야 합니다.

다시 말해 결제과정때문에 100% 자동수입원으로 만들수는 없지만 판매하는 재능 자체의 형태를 거의 95% 이상의 자동수입원으로 만들수 있습니다.

무슨 말이냐? 바로 판매하는 재능을 손이 많이 가는 재능이 아니라 최대한 손이 덜가는 재능으로 만들수 있다는 의미입니다.​

그렇게 하기 위해서 가장 좋은 방법은 판매하는 재능의 형태를 최대한 '템플릿'형태로 만들어 놓는 것입니다. 쉽게 말해 미리 틀을 만들어놓는다는 뜻입니다. 예를 들어 보겠습니다.

​제가 회사소개에 특화된 홈페이지 제작을 한다고 가정해봅시다. 그러면 아무것도 없는 상태에서 홈페이지를 만들어주는게 아닙니다. 회사 소개에 적합한 디자인과 기능이 갖춰진 홈페이지의 틀을 미리 만들어놓는 것이죠.

그래서 저에게 회사소개에 특화된 홈페이지를 제작해달라고 하면 제가 미리 만들어놓은 틀에 요청한 회사의 글과 영상, 이미지 등을 추가해드림으로써 재능을 판매할수가 있는 것입니다.

이 방법은 어떤 분야에도 적용이 가능합니다. 예를 들어 다이어트의 경우 미리 식단을 만들어놓고 판매를 할수가 있습니다.

Pro Tip : 미리 틀을 만들어놓고 돈을 벌기 위해서는 분야를 최대한 좁혀야 확률이 높습니다. 예를 들어 '다이어트 식단'이 아니라 '40대 애를 둔 엄마들만을 위한 필수 다이어트 식단'을 판매하는게 더 구매율을 증가시켜줍니다.

3. 얼마나 쉽게 벌수 있나요?

판매하는 재능에 따라 다르지만 디자인이나 프로그래밍, 비디오제작, 광고 쪽에 종사하시는 분이라면 쉽게 돈을 벌수 있습니다. 그냥 자신이 갖고 있는 재능을 판매하면 되니깐요.

하지만 위의 분야에 대해 생소한 분이라면 재능으로 돈을 버는게 쉽지 않을수도 있습니다. 처음부터 스스로 공부해야 하기 때문이죠.

이런 경우에는 2가지 방향이 있습니다. 공부해서 마케팅, 디자인, 광고, 홈페이지 제작 분야에 대해 재능을 판매하거나, 아니면 경력이나 노하우가 없어도 판매할수 있는 재능으로 시작하는 것도 하나의 방법입니다.

4. 경험이 없어도, 학력이 없어도, 노하우가 없어도 재능을 판매할수 있다!​

경험이 없어도 판매할수 있는 재능은 있습니다. 예를 들어 다음과 같은 것들이 있습니다.

1) 후기

​후기의 경우 누구나 판매할수 있는 재능입니다. 처음 시작하는 회사거나 상품을 새로 출시하는 회사들은 처음에 후기들을 필요로 합니다. 후기들이 많아야 사람들이 구매를 많이 하니깐요.

바로 이런 회사들이 이 재능의 고객이 될수 있습니다. ​하는 방법은 아주 쉽습니다. 그냥 회사의 제품에 대해 후기를 써주고 돈을 받으면 됩니다.

  • ​블로그로 제품 리뷰해주기
  • 어플에 대해 리뷰해주기
  • 영상 리뷰 만들어서 유튜브에 올려주기
  • 회사 상품 페이지에 리뷰해주기
  • 책에 리뷰해주기

2) 영상 리뷰 만들어주기

회사들은 멋진 영상으로 된 리뷰를 보여주고 싶어합니다. 또한 고객들도 보고싶어하구요. 영상 리뷰는 카메라 1개만 있으면 누구나 만들수 있습니다. 특히 얼굴에 자신이 있거나 몸매에 자신이 있다고 생각하시는 분은 관련된 제품들도 리뷰를 만들어줄수가 있습니다.

3) 소셜미디어로 홍보해주기

페이스북이나 트위터를 활발하게 활동하시는 분에게는 최고의 재능입니다. 이미 친구들도 많을 것이고, 자신이 좋아하는 분야에 대한 펜페이지나 그룹이 있을지도 모릅니다. 그리고 활동도 활발하게 하고 있다면 더더욱 좋구요.

이 재능은 아주 간단합니다. 회사에서 제품을 홍보해달라고 하면 소셜미디어로 대신 홍보해주고 수익을 얻는 방법입니다.

다만 주의할것은 이상한 제품인데도 좋다고 홍보했다가 소셜미디어에서 욕먹는 일은 당연히 없어야겠죠.​

4) 타이핑

요즘 왠만한 10대, 20대들은 타이핑 신이라고 말할수 있습니다. 이게 너무 당연하게 느껴져서 재능이라고 생각하지 못할텐데요. 타이핑도 재능입니다. 키보드를 전혀 보지 않고 손이 안보일정도로 타자를 치는 것은 당연한 일이 아닙니다. 이것도 분명히 재능이죠.

특히 인터넷 세대가 아니신 분들은 컴퓨터를 거의 사용해본적이 없기 때문에 타이핑을 하는 것에 대해 아주 답답해합니다.

그런 분들은 누가 내 대신 타이핑을 해주기를 바랍니다. 또한 시간이 부족한 분들도 타이핑을 대신 해줄 사람을 찾습니다.

​특히 영어도 타이핑 속도가 빠른 분이라면 한글과 영어 타이핑 재능을 둘다 판매할수 있을겁니다. 그리고 타자 속도가 느리더라도 타이핑 재능을 판매함으로써 타자 속도도 계속 올라갈겁니다.

결국에는 재능을 판매하는 속도도 빨라지고 타이핑 재능을 구매했던 분들이 계속 재구매를 해주고 주변에도 알려주면서 수익이 날로 늘어날겁니다.

5) ​조언을 해주세요

조언은 누구나 해줄수 있어요. 고등학생은 중학생에게 조언을 해줄수 있고, 대학생은 중학생에게 조언을 해줄수 있죠.

또한 과거에 내가 어떤 자격증에 합격했거나 시험에 합격한 경험이 있다면 그 시험이나 자격증에 대해 조언을 해줄수 있어요.

이런 조언은 단순히 책이나 강의만으로 들을수 없는 살아있는 지식이기 때문에 가치가 있는 것이죠. 분명히 이런 경험 하나쯤은 있을꺼에요. 한번 도전해보세요~

Pro Tip : 재능마켓에서 무조건 돈버는 방법 - 경쟁자가 어떤 재능을 판매하는지 확인한다. 그 재능보다 더 높은 퀄리티의 재능을 더 낮은 가격으로 판매한다. - The End -

5. 얼마나 빨리 돈을 벌수 있나요? 첫수익은 언제 발생할까요?

정확한 예측은 어렵습니다. 재능마다 다 다를테니깐요. ​보통 1주일에서 한달정도 내에 첫수익이 발생할것으로 생각됩니다. 하지만 첫수익이 언제 발생할지 알기는 힘들지만 첫수익이 발생하는 것을 최대한 앞당길수는 있습니다.

재능마켓에 재능을 올려놓고 소셜미디어에 직접 홍보를 하는 방법입니다. 또는 링크드인이나 트위터, 페이스북 등을 통해 자신의 재능 링크 주소를 공유함으로써 홍보를 할수도 있습니다.

이런 방식으로 내 재능이 필요한 사람들에게 일일이 홍보를 하거나 관련된 그룹이나 페이지에 가서 홍보를 할수도 있습니다. 이렇게 직접 홍보를 하면 재능을 구매하는 사람이 하루만에도 생길수 있습니다.​

6. ( 총 투자 비용 ) 초기 비용 및 유지 비용은 얼마인가요?​

재능을 등록하는데 드는 비용은 전혀 들지 않습니다. 재능을 판매할때마다 20%정도의 수수료를 재능마켓에 줘야 합니다. 또한 전문적인 재능을 판매하기 위해서는 비용이 들수도 있습니다. 예를 들어 회사 소개 동영상을 만들어주는 재능은 동영상을 제작하는 툴이 필요할텐데 그 툴의 비용이 매달 지불하는 방식일수도 있고 한번에 구매하는 방식일수도 있습니다.

  • ​재능 등록시 : 비용 X ( 추가 비용 전혀 없음 )
  • 재능이 판매될때마다 20% 수수료
  • 'Tool'이 필요한 재능의 경우 Tool 고정 비용
  • 직접 홍보시 홍보비용
  • 그외에 드는 비용은 일체 없음

7. 수익을 만드는데 꼭 필요한 툴들

위에 언급한 경력이나 노하우가 필요 없는 재능들은 툴이 필요가 없습니다. 반면에 홈페이지 제작 및 마케팅, 광고, 디자인, 비디오 제작의 경우 툴이 필요합니다. 툴들이 너무 많아 일일이 모두 나열할순 없고 제가 잘 아는 홈페이지 제작에 필요한 툴에 대해 간단히 알려드리겠습니다.

홈페이지 제작에 필요한 툴

  • ​도메인 업체 선택
  • 호스팅 업체 선택 ( cafe24, 닷홈, 가비아 등 )
  • 홈페이지 제작 툴 ( 워드프레스, 그누보드, 제로보드 등 )

재능 마켓 장,단점 정리

장점

  • 무자본으로 시작 가능!
  • 전문분야가 있다면 고수익도 가능!
  • 시작할수 있는 분야는 제한이 없다!
  • 이미 수요가 있어서 홍보를 안해도 판매할수 있다!

단점

  • 전문분야가 없다면 고수익은 힘들다!
  • 돈 버는 분야는 한정되있다!
  • 수수료 20%를 떼인다.
  • 내가 일하지 않아도 100% 자동으로 돈이 들어오게 만들수 없다.

8. 지금 당장 시작하는 방법

지금 당장 재능마켓에서 재능을 판매하는 방법을 알려드리겠습니다. 그대로 따라해주세요.

  1. ​국내 가장 큰 규모의 재능마켓 '크몽'에 접속
  2. 오른쪽 위 화면 - 무료 회원가입 클릭
  3. 이메일, 비밀번호 입력시 바로 회원가입 완료
  4. 오른쪽 위 메뉴 클릭
  5. 재능 등록 클릭
  6. 제목, 재능 설명 등 필요한 내용들을 모두 적어주시면 됩니다.
  7. 재능 등록 완료.

그리고 크몽 재능마켓에 가입하실때 추천인 코드에 'INVFR56404'를 넣어주시면 가입하실때 5,000원이 공짜로 적립이 되실거에요.

그리고 저에게도 5,000원이 적립이 됩니다.

재능마켓에서도 많이 홍보해달라고 추천인 제도를 만든건데요.

저도 이 곳에서 재능을 판매하고 있고, 다른 재능들도 구매하고 있는 곳입니다^^

혹시나 추천인 코드를 적는게 꺼림칙하시다면 적지 않으시고 가입하셔도 전혀 문제 없습니다^^

2번째 인터넷으로 돈버는 방법 
- 전자책 판매 -

인터넷으로 돈버는법 - 전자책 판매

​전자책은 제가 가장 좋아하는 수입원중에 하나에요. 그것도 그냥 수입원이 아니라 자동수입원이기 때문이죠.

또한 재능마켓 다음으로 인터넷으로 돈버는법 10가지 중 가장 빠르고 쉽게 돈 벌수 있는 방법이에요.

책은 한번 써놓으면 오랜 시간동안 자동으로 돈이 들어와요.

물론 아무생각없이 책만 쓴다고 자동수입원이 되진 않아요. 올바른 전략과 방법을 필요하죠.

그리고 제가 생각할때 전자책 판매는 자금력이 부족한 1인 창업가나 작은 회사가 쉽고 빠르게 인터넷으로 돈버는법 이라고 생각합니다.

왜냐하면 전자책은 종이책처럼 굳이 길게 쓸 필요가 전혀 없어요. 빠르면 1주일 안에도 책 1권을 쓸수가 있어요. 

그리고 전자책의 특성상 눈이 쉽게 피로해지기 때문에 오히려 짧은 분량의 책들이 더 인기가 많아요.

그냥 내가 이미 알고 있는 분야에 대해 40~50페이지의 글을 쓰면 그게 전자책이 되는거에요. 그리고 만약에 블로그를 장기간 운영해왔던 분들은 블로그 글들만 모아도 책 1권이 되는 분들이 많아요.

또한 책을 쓴다는 것 자체가 그 회사나 1인 창업가에게 브랜딩 이미지를 구축해줄수도 있구요.

책을 썼다는 사실 자체를 포트폴리오나 이력서에 추가해서 경쟁력을 높일수도 있습니다.

반면에 안좋은 현실도 분명히 존재해요. ​전자책 시장은 종이책 시장보다 규모가 엄청나게 작아요.

제가 알기로는 전자책 서점의 점유율이 2~5%정도밖에 안되는걸로 알고 있어요. 그렇게 매년 성장세도 아니구요.

여러가지 이유가 있겠지만 제 생각에는 아직 전자책으로 된 '컨텐츠'부족이 원인이 아닐까 싶어요.

저 같은 경우도 '아 이 책 봐야지'하고 전자책서점에 가보면 없고.. 아 저 책 봐야지 하고 전자책서점에 가보면 없어요. 그러다보면 자연스럽게 전자책서점이 가기 싫어지더라구요.

하지만 아직 시장점유율이 낮다는 것은 반대로 말하면 이렇게도 해석할수가 있어요. 아직 포화되지 않은 블루오션의 시장인거죠.

도입기의 시장이라고 보시면 되요. 물론 도입기의 시장이라는건 경쟁도 없지만 아직 수요도 별로 없다는 함정이 있어요.

하지만 걱정하지 않아도 될건, 전체적인 점유율이 낮다는 것 뿐이지 전자책중에서도 잘팔리는 분야들이 따로 있어요. 그런 분야들을 공략해서 책을 쓴다면 돈을 벌수 있어요.

그리고 가장 좋은 방법은 전자책서점 외에도 내가 직접 인터넷으로 판매하는 것이 가장 좋은 방법이에요.

내가 직접 팔수 있다면 왜 굳이 전자책 서점와 출판사에 30%의 수수료를 줄까요? 그럴 필요가 없다는거죠.홈페이지를 만들어서 온라인 마케팅을 통해 판매를 하는 방법이죠.

홈페이지를 만들줄 알고 온라인으로 광고를 할줄 알면 전자책 서점에서의 부족한 수요를 충분히 충당하고도 남아요.

그리고 더 좋은건 전자책의 수익을 출판사나 전자책서점에 수수료를 전혀 줄 필요가 없기 때문에 내가 수익을 100% 가져갈수 있다는 점이 가장 매력이에요.

또 한가지, 홈페이지로 전자책을 판매하면 글 뿐만 아니라, 오디오나 온라인 강의를 추가해서 품질을 높일수도 있고, 가격조정도 내마음대로 올리고 내릴수도 있어요. 

또한 여러 상품을 동시에 판매함으로써 수익을 극대화 할수도 있고, 판매 페이지의 디자인을 입맛에 맞게 변경해 수익을 끌어올릴수도 있어요. ​이러다보니 직접 판매가 수익이 높은건 당연한 결과에요.

아 나는 프로그래머도 아니고 기술적인 부분은 아예 몰라요.. 라고 말씀하시는 분 분명히 계실텐데요. 사실 저도 '코딩' 거의 할줄 몰라요. 배우긴 배웠는데 실전에 써먹은적은 거의 없는것 같아요.

실제로 이 사이트도 제가 만들었는데요. 저는 '워드프레스'라는 홈페이지 제작 도구로 만들었구요. 이 사이트는 제가 '코딩'을 전혀 하지 않고 만든 사이트에요.

요즘에는 좋은 기능들이 이미 만들어져 있어서 2~5만원만 지불하면, 클릭 몇번으로 바로 구현이 가능해요.

그리고 또 한가지 문제는 바로 책쓰기에 대한 걱정이에요. 나는 글로 쓸게 없는데.. 나는 전문가가 아닌데.. 나는 책을 한번도 안써봐서.. 이런 눈에 보이지 않는 장벽들이 분명히 존재할꺼에요.

저도 그랬었구요. 이런 걱정이 드는 분들을 위해 컨텐츠를 만들고 있는데요. 지금은 글이 다 작성이 안됬어요. 글이 발행되는데로 보고 싶은 분은 맨 아래에 이메일 구독 신청을 해주시면 바로 알려드릴께요.

==>> 전자책 글쓰기를 가로막는 5가지 장애물, 어떻게 생각하고 극복해야 할까? (준비중)

1. 현실적으로 벌수 있는 수익

노력과 전략에 따라 수익은 천차만별이 될수 있습니다. 잘 버는 분들은 월 1억도 벌고 못버는 분들은 매달 5만원도 벌지 못합니다.

전략없이 그냥 책만 쓴다음에 서점에 출판하고 누군가는 사주겠지 하고 기다리면 아무도 구매하지 않고 수익은 제로가 될수도 있습니다. 정말 아무도 구매하지 않을수도 있습니다. 따라서 현실적으로 매달 50만원이상 벌수 있는 전략을 알려드립니다.

2. ​매달 20만원 이상 벌수 있는 전략

​서점에서 판매하는게 아니라 내가 직접 판매하는 것만이 확률이 훨씬 더 높습니다.

서점에서만 판매한다는 생각을 버리셔야 합니다. 서점에는 이미 내가 쓰고 싶은 책과 비슷한 책들이 이미 즐비해있고, 지금도 수많은 책들이 새로 출판 되고 있습니다. 따라서 그 모든 책들과 경쟁해야 합니다. 이는 돈이 되는 분야일수록 경쟁은 더욱 치열해집니다.

그러다보면 흔히들 발생하는 현상이 내 책이 1페이지에서 안보이는 현상입니다. 뒤로 밀린것이죠. 그러면 구매율이 엄청나게 떨어집니다. 그렇다고 1페이지에 올라가기 위한 특별한 전략도 없습니다. 그저 운에 맡기는게 대부분입니다.

그런 접근 방법으로는 불확실한 결과만 초래합니다. 잘 팔릴수도 있고, 안 팔릴수도 있는 방법입니다. 따라서 ​내가 직접 판매해야 합니다!

그럼 어떻게 판매해야 할지 막막할겁니다. ​방법은 바로 나만의 웹사이트를 만들어서 판매하는 방식입니다. 국내에서는 내 홈페이지를 만들어서 전자책을 판매한다는게 정말 생소한 개념일겁니다. 하지만 해외의 선진화된 사례들을 보면 모두 책들을 서점에만 팔고 있는 어리석은 짓은 하지 않습니다.

​오히려 서점은 책을 판매할수 있는 수많은 루트중에 하나일뿐입니다. 책도 물리적인 상품과 똑같이 생각하시면 됩니다.

홈페이지를 만들고, 블로그를 만들고 트위터나 페이스북, 핀터레스트 같은 소셜미디어에 홍보를 하고 유튜브에 소개 영상을 올려서 책에 대한 관심을 높이는 등의 방법을 통해 책 1권의 수익을 극대화시킬수 있습니다.

​이 방법이 현존하는 전자책을 판매하는 방법중에 가장 수익을 극대화시킬수 있는 방법입니다. 간단하게 정리하고 넘어가겠습니다. 홈페이지를 제작하는 방법을 모르시는 분은 '여기서 시작하기'(업데이트중입니다. )글을 참조해주시면 누구나 쉽게 워드프레스 홈페이지를 시작할수 있습니다.

  • ​홈페이지 제작
  • 홍보
    • 페이스북에 홍보
    • 트위터에 홍보
    • 핀터레스트에 홍보
    • 구글 플러스에 홍보
    • 링크드인에 홍보
    • 네이버 블로그, 티스토리 만들어서 홍보
    • 구글 검색 상위노출
  • 홈페이지에서 판매
  • 완료!

3. 매달 50만원이상 벌수 있는 전략

​제가 50만원이라고 썻지만 이 전략은 해외에서 제대로 적용해 수익을 만들고 있는 사이트들은 200만원에서 500만원 이상씩 수익을 내고 있습니다. 물론 6개월에서 1년정도 시간과 노력을 투자한 사이트들이니 뚝딱 만들수 있는 수익은 절대 아닙니다.

저는 이번 글에서 어떻게 하면 전자책으로 수익을 극대화시킬수 있을지에 대해 얘기하고 있었습니다. 하지만 홈페이지로 전자책을 판매할수 있다면 굳이 전자책만 판매할 필요는 없습니다. 오히려 전자책과 함께 온라인 코스와 1:1코칭 등을 통해 수익을 더 끌어낼수가 있습니다.

전자책을 구매한 사람이 온라인 코스를 구매하고, 온라인 코스를 구매한 사람이 1:1 코칭을 받게끔 만듬으로써 1명당 수익을 극대화시킬수 있다는 뜻입니다. 어떤 분야든지 이런 전략을 구사하는 사이트는 인터넷으로 매달 100만원 이상 벌수 있는 가장 빠르고 효과적인 방법입니다.

또한 ​한번 구매한 고객들은 새로 출시되는 전자책이나 온라인 코스를 구매하게 됩니다. 따라서 1명당 수익을 최대치로 끌어올릴수가 있습니다.

단순히 서점에서만 책을 판매하겠다고 생각한다면 1명당 수익이 책1권으로 끝날겁니다.

따라서 수익을 최대치로 ​끌어올리기 위해서는 단순히 '전자책'을 판매하겠다는 생각이 아니라 1명당 수익을 얼마나 극대화시킬수 있는지에 초점을 맞추면 매달 100만원 이상 벌리는 사이트를 만들수 있습니다.

4. 얼마나 쉽게 벌수 있나요?​

재능마켓 다음으로 가장 쉽게 돈을 벌수 있는 방법입니다. 한달 안에도 첫 수익이 발생할수 있습니다. 책을 쓴뒤에 모든 재능마켓에 올리고, 홈페이지를 만들고 블로그도 만들고 유튜브 소개 영상을 만들어 팔면 됩니다.

5. 책 쓰는거 어렵지 않나요?​

물론 책 쓰는게 그렇게 쉽지 않다고 얘기들 합니다. 물론 한 평생 20년 넘게 연구해서 엄청난 책 1권을 쓰는 것이 목표라면 엄청나게 어려운 일일겁니다.

하지만 사람들에게 도움이 되는 책, 즉 팔릴수 있는 책을 쓰는데는 ​10년 20년이 걸리지 않습니다. 심지어 하루만에 쓴 책도 팔릴수 있습니다. 사람들에게 도움이 될수만 있다면요. 참고로 제가 1주일도 채 안걸려 쓴 책들입니다.

  • 번개보다 빠르게 글 빨리 쓰는 방법( 품질은 떨어뜨리지 않고?! )
  • 워드프레스 홈페이지 60분만에 시작하기
  • 하루 24시간을 꽉꽉 채워 살수 있도록 해주는 생산성 향상 방법

이외에도 20개가 넘는 전자책을 썼고 대부분 1주일이 채 걸리지 않았습니다. 제가 원래부터 글을 잘써서가 아닙니다. 제 주변 지인들은 알지만 저는 20살때까지 제 의지로 글을 써본적이 단 한번도 없습니다.

저는 그동안 글을 빨리 쓰는 방법에 대해 나름 연구를 했고 저 나름의 체계와 방법을 갖고 있기 때문에 빨리 쓸수가 있는 것입니다.

6. 책 쓰기가 쉬워지려면 글을 빨리 쓰는 방법을 체득하자!

글을 빨리 쓰는 방법만 체득한다면 책 쓰는 것 어렵지 않습니다. 제가 직접 적용하고 있는 방법과 규칙중 대표적인 3가지 방법을 알려드리겠습니다.

1) 타이머는 필수!

​책을 빨리 쓰기 위해서 타이머는 필수입니다. 책 뿐만이 아니라 어떤 프로젝트나 일을 최대한 빠른 시간내에 마무리하기 위해서는 타이머는 필수라고 생각합니다.

저는 전자책을 만들때 자료를 조사하고, 자료를 정리하고, 글을 쓰고, 글을 수정하는 모든 시간을 타이머로 정해놓습니다.

타이머를 맞춰놓을 경우 그 시간내에 어떻게든 처리를 해야 하기 때문에 평소에 널널하게 일을 하던 습관을 바로 잡을수 있습니다. 1분 1초를 밀도 있게 쓸수가 있는 것이죠. 또한 마감시간이 임박했을때는 긴박함때문에 좀 더 집중해서 일을 하게 됩니다. 따라서 생산성이 엄청나게 높아지는 것이죠.

그리고 타이머를 맞춰서 일을 하다보면 내가 완전히 집중했을때 얼마나 일을 할수 있는지 대략 감이 옵니다. 그래서 다음에 타이머를 맞출때는 내가 실제로 감당할수 있는 시간이면서도 약간 빠듯한 시간으로 맞춰서 최대의 생산성으로 일을 마무리할수가 있습니다.

이 방법은 전자책 쓰기 뿐만 아니라 모든 업무에 적용할수가 있습니다. 특히 반복되는 업무에는 탁월한 효과를 보이고 평소의 업무시간보다 절반이상은 줄일수 있습니다.

2) ​자료 조사하는 곳은 미리 정해둔다!

자료를 조사하는 가장 좋은 방법은 이세상에 있는 모든 자료를 다 참조하는 것입니다. 하지만 이건 너무 비현실적이죠. 제가 자주 조사하는 곳을 알려드리겠습니다. 저는 여기에 있는 자료들만 참조하기에도 충분히 넘친다고 생각합니다.

  • Google Scholar : 전세계의 모든 학술정보(최신 연구자료) 확인 가능
  • Google 검색 : 국내, 해외 상위 1페이지에 있는 글들 참조
  • Udemy.com : 무료 온라인 강의, 유료 온라인 강의 참조
  • Amazon Kindle : 베스트 셀러 책 참조
  • 네이버 책 : 국내 베스트셀러 책 참조
  • 네이버 지식인, 다음 팁 : 사람들의 실제 궁금증 참조
  • Lynda.com : 해외 온라인 강의 참조
  • Google 검색 : '전자책 이름 + Blog 글들 참조

위의 자료 소스들만 참조해서 책을 쓰려고 해도 참고자료가 몇백개나 됩니다. 써보시면 아시겠지만 그 내용들을 다시 입맛에 맞게 정리해야 하기 때문에 이정도 참고자료도 충분하시리라 생각 됩니다.

3) 빨리 쓸수 있는 책 주제

누구나 책을 빨리 쓸수 있는 주제는 따로 있습니다. 갑자기 여러분 보고 발가락의 기능해부학에 대해 완전히 파헤친 글을 쓰라고 하면 아마 1년이 걸려도 못쓸겁니다. 하지만 다음과 같은 주제라면 누구나 쉽게 시작할수 있습니다.

  • '~하는 방법'

~하는 방법에 대한 글은 누구나 쉽게 시작할수 있는 주제입니다. 예를 들어 차 운전하면서 잠을 깨는 10가지 방법 이라는 책이 있다면 흥미롭고 유용한 책이 될겁니다. 10가지 방법에 대해 자료조사를 한뒤에 내 입맛에 맞게 정리해서 10가지 방법에 대해 쓰면 됩니다. 

방법 하나하나를 블로그 글 1개라고 생각하면 큰 부담을 줄일수 있습니다. 책 한권을 쓰는 것보다 블로그 글 10개를 쓴다고 생각하면 마음이 한결 편하기 때문입니다.​

또한 ~하는 방법에 대한 글의 주제는 정말 무궁무진합니다. 평소에 자신이 아는 부분에 대해 ~하는 방법의 주제로 글을 쓰면 그게 바로 책이 될수가 있습니다.

​7. 초기비용과 고정비용은 얼마인가요?(총 투자비용)

​직접 홈페이지를 만들어서 판매하는 경우 :

  • ​도메인 : 1년 10,000원
  • 호스팅 : 매달 500원~5000원
  • 홈페이지 툴 : 5만원 ~ 30만원 ( 워드프레스 기준 )
  • 광고 비용 : 클릭당 평균 100원~500원 ( 페이스북, 구글 애드워즈, 네이버 키워드광고, 다음 키워드광고 )
  • 전자책 글쓰기 툴 : 무료~매달 5만원 ( 저는 개인적으로 Ulysses 글쓰기 툴을 사용하기 위해 매달 4만원씩 지불 하고 있습니다. 윈도우의 경우 Scrivener가 유명하다고 들었습니다. )

서점에 판매하는 경우

  • 직접 테스트후 알려드리겠습니다.
  • 전자책 서점과 수익 배분 6:4 ~ 7:3

8. 수익을 만드는데 꼭 필요한 도구들

직접 홈페이지를 만들어서 판매하는 경우 : 

  • 도메인
  • 호스팅
  • 홈페이지 제작 툴 : 워드프레스, 그누보드, 제로보드 등
  • 구글 애드워즈 키워드 리서치 툴

전자책 직접 판매 장,단점 정리

장점

  • 장기적으로 볼때 100만단위의 고수익 가능!
  • 분야에 제한이 없다!
  • 수익을 온전히 내가 얻을수 있다!
  • 일하지 않아도 100% 자동으로 돈이 들어오도록 만들수 있다!
  • 한 분야의 전문가로 개인 브랜딩 할수 있다!

단점

  • 고수익까지 기간이 오래걸릴수 있다. 6개월~1년
  • 홈페이지 제작, 마케팅 등 기술적인 부분에 대한 공부가 필요하다.
  • 책을 잘못 쓸 경우 구매량이 낮을수 있다.
  • 컨텐츠가 없는 경우 자료조사 및 자료정리 기간이 필요하다.

9. 지금 바로 시작하는 방법

직접 홈페이지를 만들어서 판매하는 경우

  1. 키워드 리서치 ( 구글, 네이버 )
  2. 도메인 신청
  3. 호스팅 신청
  4. 워드프레스로 홈페이지 제작
  5. 광고 : 페이스북, 트위터, 핀터레스트, 유튜브, 네이버 키워드 광고, 구글 키워드 광고, 다음 키워드 광고, 블로그, 티스토리 등

서점에 판매하는 경우

  1. 아주 잘 설명한 글이 있어서 이 글로 대체합니다. 전자책 1인 출판사를 직접 등록한 경험을 토대로 글을 써주셨고 과정 또한 아주 자세합니다. 이대로만 따라하시면 1인 출판사를 만들수 있습니다.

3번째 집에서 돈버는 방법 : 제휴마케팅

집에서 돈버는 방법 - 제휴마케팅

​제휴마케팅.. 제 개인적으로는 실패한 비즈니스 모델중 하나에요. 처음에는 쉽게 보여서 접근했었는데요. 집에서 돈버는 방법 으로는 쉽지 않을수도 있습니다.

물론 제휴마케팅으로 돈을 조금 벌기는 하고 있는데요. 하지만 국내 제휴마케팅은 투자시간을 따지면 실패했다고 봐도 무방할것 같네요.

일단 제휴마케팅에 대해 잘 모르는 분이 있을까봐 짧게 설명드릴께요.

제휴마케팅은 남의 상품을 내가 대신 팔아주고 %로 수익을 받는 방식이에요. 해외에서는 수수료를 90%까지 주는 경우도 있는데요. 국내에서는 많아봤자 10%~20%? 정도네요.

저는 주로 블로그와 사이트를 만들어서 제휴마케팅을 시도했었는데요. 정말 성심성의껏 고객이 무엇을 원하는지 분석도 해보고 글도 정말 성심성의껏 써서 홈페이지를 만들어서 마케팅을 했었는데요.

결과는 거의 참패하다시피 했었습니다. ​돈이 들어오긴 하는데 노력 대비 수익이 얼마나 발생했는지를 생각해보면 분명히 실패라고 말할수 있습니다.

그나마 다행인건 제휴마케팅을 '자동수입원'으로 만들어 놔서 지금도 수익이 들어오곤 하는데요.

정말 양질의 글을 써서 ​정말 원하는 소수에게 판매하자 라는 접근법은 잘 통하질 않더라구요. 아무래도 저의 고객 분석이 잘못됬거나 글이 팔릴정도로 매력적이지 않았을수도 있고, 아니면 상품의 질이 안좋았을수도 있고.. 여러가지 원인을 들수 있습니다만 어쨋든 이런 접근법으로는 거의 팔지를 못했습니다.

좀 더 연구해봐야 될것 같습니다만 연구하는 시간 대비 효율이 좋을것 같지 않아 망설여지긴 합니다. 그리고 솔직히 국내 제휴마케팅 상품중에는 제가 판매해주고 싶은 매력적인 상품이 보이질 않아서 더욱 의욕이 나질 않구요. 제가 평소에 사용하는 제품이 단 하나도 없는것도 문제구요.

다시 말해서 제가 국내에서 제휴마케팅을 하기 위해서는 한번도 사용해본적 없는 제품을 판매해야 하는 입장이었습니다. 아무래도 저는 이게 실패의 가장 큰 원인이라고 봅니다. 제품에 대해서도 잘 모르고 고객에 대해서도 잘 모르는 상태에서 판매를 했으니깐요. 인터넷으로 나름 조사하고 공부하면서 이정도면 다 알아봤다고 생각했는데 착각이었나봅니다.​

뭐 어쨋든 이건 저의 개인적인 경험이구요. 제휴마케팅으로 매달 100만원, 1000만원까지 버는 분도 분명히 봤었습니다.​ 불가능한건 아닙니다.

​다만 국내에서 제휴마케팅으로 큰 돈을 벌려면 퀄리티 승부보다는 물량전으로 가야 될겁니다. 조금 질이 떨어지더라도 중퀄리티 정도의 글들을 매일 매일 쏟아내는 식으로 가야 제휴마케팅에 승산이 있을거라고 생각합니다. 다만 저는 노력 대비 배우는 것이 별로 없고, 수익도 그리 크지 않을것 같아 이런 시도는 하지 않고 있습니다.

혹시나 ​다른 접근 방법으로 버는 분이 계시거나 노하우를 갖고 계신분이 있다면 제가 돈 내고서라도 배우고 싶습니다.

제휴마케팅에 대해서 제가 비관적인 느낌으로 얘기를 한것 같지만 사실 제휴마케팅이라는 비즈니스 모델은 아주 매력적이라고 생각합니다. 다만 국내 제휴마케팅을 할바에는 차라리 다른 방법을 연구하거나 해외 제휴마케팅을 도전 하는 편이 더 나을수도 있다는 생각이 듭니다. ( 물론 영어가 안된다면 말리고 싶기는 합니다. 영어 모르면 해외 제휴마케팅 저처럼 개고생 할수도 있어요; )

그리고 제휴마케팅이라고 장점이 없는건 아닙니다.

제휴마케팅은 제가 직접 제품을 만들 필요가 없기 때문에 판매만 해주고 나머지 상담이라든지 환불처리 등 골치아픈 일 없이 판매에만 집중할수 있다는 장점이 있습니다.​

다만 제휴마케팅의 단점이라면 저에게 '통제력'이 없다는 점입니다. 가격을 변경할수 없고, 상품의 질을 높일수 없고, 이벤트를 임의대로 실시할수 없고, 개선하고 싶은 부분이 있어도 개선할수 없다는 점입니다. ( 물론 상품 제작자에게 개선시켜달라고 부탁할수도 있지만 안들어주면 답이 없습니다. )

그래서 저도 제휴마케팅을 할때, 좀 더 개선하고 싶은 사항이 있어도 개선하지 못한다는 생각에 많이 답답할때가 많았습니다.

특히 제휴마케팅을 하면서 크게 느낀점은 제가 큰 수익을 얻기 위해서는 제품의 질이 다소 떨어지더라도 판매를 해야 하는 상황이 발생할수 있다는 점입니다.

솔직히 저는 대출이나 보험 등을 판매하고 싶은 생각은 별로 없지만, 제휴마케터로서 큰 수익을 얻기 위해서는 그런 분야까지 건드려야 할수도 있습니다.

어쨋든 정리해보면 제휴마케팅의 장점은 상품 제작이 필요없이 판매만 하면 되기 때문에 골치아픈일 없이 수익을 낼수 있습니다. 반면에 단점은 제품의 가격,품질에 대한 통제력이 없다는 점과 큰 수익을 얻기 위해서는 다소 품질이 떨어지는 제품까지 팔아야 하는 상황이 발생할수 있다는 점입니다.

어쨋든 정리해보면 제휴마케팅의 장점은 상품 제작이 필요없이 판매만 하면 되기 때문에 골치아픈일 없이 수익을 낼수 있습니다. 반면에 단점은 제품의 가격,품질에 대한 통제력이 없다는 점과 큰 수익을 얻기 위해서는 다소 품질이 떨어지는 제품까지 팔아야 하는 상황이 발생할수 있다는 점입니다.

장점

  • 무자본으로 시작 가능!
  • 골치 아픈 일 없이 판매에만 집중 할수 있다!
  • 내가 직접 힘들게 제품을 만들지 않아도 된다!

단점

  • 통제력이 없다. 가격 변경, 상품 개선, 이벤트 실시 등 내가 직접 개선시킬수 없다!
  • 제휴마케팅 업체가 사라지면 내 수익도 날라갈 위험이 있다!

4번째 인터넷으로 돈버는 방법 : 애드센스

인터넷으로 돈버는 방법 - 애드센스

구글 애드센스의 수익 모델은 간단합니다. 블로그나 사이트를 만들고 그곳에 구글 애드센스 배너를 설치합니다. 그리고 방문자가 그 애드센스 배너를 클릭하면 저에게 수익이 들어옵니다.

구글 애드센스의 장점이라고 한다면 구글 검색을 통해 애드센스 수익을 벌수 있다면 정말 패시브인컴으로 구축할수 있다는 점입니다. 내 글이 구글에 한번 올라가면 잘 내려오지 않기 때문에 장기간동안 수익을 보장해주기 때문이죠.

반면에 단점이라고 한다면 다른 수익 모델 보다 수익이 정말 짭니다. 저는 사실 이 부분 때문에 애드센스를 시작했다가 중간에 그만둔 1인입니다. 물론 애드센스로 돈을 못번다는 얘기가 아닙니다. 이미 국내에서도 몇백만원씩 벌고 계신 분들이 있는 것 잘 알고 있습니다.

다만 다른 수익모델에 비하면 시간 투자 대비 들어오는 수익이 부족하지 않나 라는 생각을 해봅니다. 물론 대출이나 보험 같은 분야는 한번 클릭하면 1000~5000원정도의 광고수익을 주지만 현재 경쟁이 치열하고 어느정도 포화상태인 분야입니다.

현재 저도 제대로된 애드센스 사이트를 준비하고 있긴 하지만 큰 기대는 하고 있진 않고 있습니다. 그냥 소소한 부수입정도로 생각하고 접근해야 실망도 없을것 같습니다.

5번째 집에서 돈버는법 : 웹하드 제휴마케팅

웹하드도 제휴마케팅 수익모델입니다. 제가 블로그나 사이트를 만듭니다. 웹하드로 이동하는 링크를 블로그에 배치해놓습니다. 사람들이 그 링크를 클릭해 웹하드에 가입하면 저에게 돈이 들어옵니다.

얼마나 들어오냐구요? 100~500원정도 들어옵니다. 저도 웹하드 사이트를 만들어보고 해봤습니다. 근데 노력 대비 수익이 너무 짭니다. 이제 이 분야도 포화상태이긴 마찬가지입니다.

하지만 마찬가지로 돈을 못번다는 얘기는 아닙니다. 하지만 노력 대비 수익이 그렇게 크지 않은게 가장 큰 문제입니다.

그리고 모든 제휴마케팅 수익 모델의 가장 큰 문제는 저에게 '통제력'이 없다는 점입니다. 통제력이 없다는 것의 가장 큰 리스크는 무엇일까요?

갑자기 업체가 돈을 들고 날르면 저는 새가 됩니다. 물론 큰 업체에서 하면 그럴 가능성은 거의 없지만 적은 확률로 언제든지 망할 확률은 있습니다. 그럼 손해보는건 전적으로 저와 같은 제휴마케터들입니다.

그럼 답은 무엇일까요? 저의 개인적인 결론은 '제 사업'하는 것입니다. 되게 허무한 결론일지도 모르지만 저는 이게 답이라고 생각합니다. 저에게 100% 통제력이 있는 제 사업을 하는게

6번째 인터넷으로 돈버는법 : 기부를 해주세요!

혹시나 여러분이 양질의 컨텐츠를 생산하고 있고, 글을 읽는 사람들이 정말 고마워 할만한 컨텐츠를 생산하고 있는 분들은 이 방법을 언제든지 사용할수 있습니다. 아주 간단합니다. 한쪽 사이드 메뉴에 '기부하기'창을 해놓으면 글을 읽고 정말 감명을 받거나 고마움을 느낀 사람들이 기부를 합니다.

물론 우리나라 사람들은 기부에 좀 인색한게 사실입니다. 그래서 기부를 해달라고 하면 잘 안하는 경향이 있는데요. 제가 어떤 분의 오프라인 강의를 실제로 들었던 적이 있는데 기부를 해달라고 하지말고 마음에 드셨다면 커피값 한잔 정도의 금액을 달라고 하면 사람들이 많이 준다는 것을 들었던 경험이 있습니다.

저도 직접 테스트해봐야 알겠지만 현재 양질의 글이 많은 분이라면 지금 바로 실행해서 테스트해볼수 있을것 같습니다. 워드프레스 사용자라면 기부를 페이팔로 받을수 있고, 티스토리에도 이름은 까먹었지만 기부받을수 있는 기능이 추가된것으로 알고 있습니다.

7번째 집에서 돈버는 방법 : 아마존 어필리에이트

집에서 돈버는 방법 - 아마존 어필리에이트

현재 국내에도 아마존 어필리에이트로 돈을 많이 벌고 계신 분이 계시지만 저의 경우 수익율이 너무 작아서 시도해보지는 않았습니다.

아마존에서 어필리에이트로 돈을 벌수 있습니다. 제품이 판매될때마다 4%의 수익을 얻고 많이 팔리면 수수료가 최대 10%까지 증가한다고 합니다.

만약에 제가 아마존 어필리에이트를 시작한다면 단가가 10만원이상 짜리 제품중 경쟁이 적고, 구매가 많이 발생하는 제품만 찾아서 작은 니치 사이트를 만드는 방식으로 돈을 벌것 같습니다.

근데 저는 아마존 제품을 제대로 리뷰해서 판매를 해야 되는데 리뷰를 제대로 하려면 제품을 직접 구매하는게 가장 좋을 것 같습니다. 저는 아마존에서 전자책말고는 딱히 구매하진 않기 때문에 리뷰 사이트는 만들 생각이 아직 없습니다.

만약 아마존에서 이미 비싼 제품을 구매하고 있고, 어필리에이트(제휴마케팅)으로 이미 국내에서 돈을 벌고 계신분이라면 좋은 기회가 될것 같습니다.

8번째 온라인으로 돈버는 방법 : 웨비나로 돈을 벌어보세요!

웨비나라는 단어는 생소한 분들이 많으실텐데요. 웨비나는 웹+세미나의 약자입니다. 원래 세미나의 경우 오프라인에서 사람들끼리 직접 만나서 하는 강의라고 본다면 웨비나는 웹상에서 강의자가 화면에 얼굴이나 프리젠테이션을 보여주면서 강의를 하는 형식입니다.

우리나라의 경우 아직 활성화되진 않았지만 해외에서는 세미나보다 더 활성화된 문화입니다. 아마 조금만 있으면 저 같은 사람들이 늘어나면서 웨비나도 활성화되지 않을까 생각을 해봅니다.

웨비나를 열면 세미나를 열기위해 굳이 어딘가를 가서 강의를 하지 않아도 되기 때문에 안할 이유가 없습니다.

9번째 집에서 돈버는법 : 소프트웨어를 만들어서 판매하세요!

요즘에는 기술이 없더라도 아이디어만 있다면 아웃소싱을 통해 멋진 소프트웨어를 만들수도 있습니다. 물론 개인이 만드는 것도 가능합니다.

10번째 집에서 인터넷으로 돈버는법 : 프리랜싱

집에서 인터넷으로 돈버는 방법 - 프리랜싱

어찌보면 지금까지의 인터넷으로 돈버는법 모두가 다 프리랜서가 하는일이라고 볼수 있습니다. 국내에서는 특히 프로그래머나 디자이너 쪽에 프리랜서가 많습니다. 주로 큰 기업의 프로젝트를 맡아서 대신 처리해주고 수익을 얻고 있는 것으로 알고 있습니다.

제가 제대로 해보지 않아서 알기는 힘드나 제대로된 프로젝트를 받아서 처리해주기 위해서는 일정수준 이상의 기술이나 팀이 필요할것으로 생각됩니다.

국내

  1. 이랜서
  2. 위시켓
  3. 프리누리

해외

  • elance
  • Odesk
  • peopleperhour
  • freelancer.com

11번째 인터넷으로 돈버는방법 : 글쓰기

요즘엔 작가가 꼭 글을 써서 책을 내지 않아도 돈을 벌수 있습니다. 해외에는 널리퍼져 있는 시장으로써 작가-클라이언트 마켓플레이스가 있습니다. 국내에는 '콘텐타'라는 곳이 있습니다.

콘텐타는 글을 쓰는 작가와 콘텐츠가 필요한 클라이언트를 연결해주는 플랫폼입니다. 이곳의 좋은 기능은 클라이언트가 작가에게 미리 특정 컨텐츠를 의뢰할수 있다는 점입니다. 따라서 작가는 이미 클라이언트가 돈을 주겠다는 컨텐츠를 쓸수 있기 때문에 수익이 보장될수 있습니다.

12번째 집에서 돈버는방법 : 그래픽 디자인

이쪽 분야는 깊게 알지는 못하지만 디자이너로써 생계를 유지하는 분들이 굉장히 많은 것으로 알고 있습니다. 국내의 경우 배너디자인이나 로고 디자인 등 다양한 영역의 디자인으로 생계를 유지하고 있습니다. 남성보다는 주로 여성분들이 많은 분야입니다.

국내

  • 디자인서커스

해외

  1. 99design
  2. behance jobs

13번째 인터넷으로 돈버는방법 : 프로그래밍

국내에서는 박봉 직업 중 하나가 프로그래머라는 소리를 많이 들었습니다. 제 개인적인 생각으로는 프로그래머가 비즈니스적인 마인드를 갖춘다면 수익을 얻을수 있을꺼라 생각이 듭니다.

14번째 온라인으로 돈버는법 : 번역

국내에서도 번역 플랫폼이 많이 있습니다. 재능마켓에서도 번역 의뢰가 빈번할만큼 수요가 많기 때문에 돈을 벌수 있습니다. 하지만 단가가 그렇게 크지 않아 생계를 유지할만큼 큰 수익을 벌수 있을지는 모르겠습니다.

15번째 집에서 돈버는방법 : 고객 서비스

혹시 4시간 이라는 책을 읽어보신적이 있으신가요? 그 책을 보면 '가상 비서'라는 개념이 나옵니다. 가상 비서란 직접 만날 필요 없이 인터넷 상에서 내 대신에 비서역할을 해주는 개념입니다. 국내에는 이런 개념이 없지만 해외에서는 널리 퍼져 있는 개념입니다. 일을 맡기고 그 사람이 내 대신 일해주는 만큼 돈을 주는 방식입니다.

16번째 : 블로그로 돈버는 방법

17번째 : 온라인 비즈니스를 제대로 시작하고 싶다구요?

결론

이외에도 인터넷으로 돈버는 방법에 대해 계속 연구중이고 추가중입니다. 


블로그 이미지

낭만가을

,

테이블을 저장하는 공간이란 의미도 틀린것은 아니지만 정확한 의미는 아닙니다.

 

오라클은 데이터베이스 관리 시스템이고 말 그대로 데이터들을 관리합니다. 즉 어딘가에 데이터들을 저장, 추출, 삭제, 변경하는 작업을 할 수 있는 것입니다. 그렇다면 데이터는 어디에 저장되는 것일까요? 물론 파일에 저장됩니다.

 

오라클 데이터베이스는 데이터 파일들을 가지고 있으며, 이 파일들에 데이터가 저장됩니다. 그런데 파일은 데이터가 저장되는 물리적인 공간을 말하는 것입니다.

 



 

 

오라클 내부에서는 데이터 블록(data block), 익스텐트(extent), 세그먼트(segment), 테이블스페이스(tablespace)라는 논리적인 개념으로 데이터 들을 관리합니다.

 

오라클에서 데이터를 저장하는 가장 최소의 논리적인 단위가 데이터 블록이며, 데이터 블록이 모여서 익스텐트가 되고, 익스텐트가 모여서 세그먼트, 세그먼트가 모여서 테이블 스페이스가 됩니다. 실제로 물리적인 데이터 파일(확장자가 dbf 혹은 ora인 파일)은 테이블 스페이스와 대응됩니다.

 

하나의 테이블 스페이스는 최소 1개의 데이터파일로 구성됩니다.

 

테이블 이외에도 인덱스, 프로시저, 뷰 등 다른 여러 가지 오라클 객체들이 저장됩니다. 

블로그 이미지

낭만가을

,

SQL 튜닝은 "SQL + 튜닝"입니다. 즉, SQL 튜닝이란 튜닝 대상이 되는 SQL을 이해하고, SQL이 가진 정보(테이블/인덱스/컬럼의 정보 및 업무적 성격 등)를 치밀하게 분석하여 얻어지는 결과라고 생각합니다. SQL 튜닝을 시작하기 위해서는 SQL에 대한 이해가 선행되어야 한다고 생각합니다. 왜냐하면, SQL의 작성형태에 따라 다양한 성능 문제가 발생되기 때문입니다.

 

SQL 튜닝의 시작은 SQL의 의미(작성 의도)를 제대로 파악하는 것입니다. SQL의 의미를 정확히 파악하지 못한다면, 원본 SQL에서 추출하고자 했던 결과 집합이 아닌 다른 집합을 추출하게 될지도 모릅니다. 이러한 개선안은 개선안이라고 할 수 없습니다. 즉, 원본 SQL의 작성 의도를 제대로 파악하지 않고, 단순히 I/O 발생량을 줄인다거나 수행시간을 단축하기 위해 힌트를 남발하는 것은 상당히 위험한 일입니다. 그러므로 SQL의 의미를 파악하는 것이 성능 문제를 유발하는 SQL에 대한 개선의 시작이라 말할 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT *
FROM  (
  SELECT /*+ INDEX_DESC(A IDX_MOX_SENDDATE) */
    a.*,
    ROWNUM as rnum
  FROM   tbs_mbox a
  WHERE userid = :b1
    AND status = :b2
    AND ROWNUM <= :b3
  )
WHERE rnum >= :b4;
 
SELECT STATEMENT - CHOOSE- COST ESTIMATE:3
VIEW
  COUNT STOPKEY
  TABLE ACCESS BY INDEX ROWID :imsi.tbs_mbox
  INDEX RANGE SCAN DESCENDING :imsi.idx_mbox_senddate

 

해당 SQL은 메일 프로그램에서 사용되며, 동시 간대(특히, 업무 시작 시간, 09:00)에 다수의 다용자가 사용하는 특성이 있습니다. 뿐만 아니라, 데이터를 추출하는 과정에서 발생하는 경합으로 인해 DB 서버 전반적인 성능 저하를 유발하는 악성 SQL입니다.

 

해당 SQL은 INDEX_DESC 힌트와 ROWNUM 조건으로 인해 COUNT STOPKEY의 실행계획이 수립되었습니다. 따라서 전체 데이터를 모두 처리하지 않고, RONUM, 조건에 해당하는 일부의 데이터만 처리할 것으로 예상됩니다. 즉, 실행계획 상으로는 SQL의 문제점을 찾기가 쉽지 않습니다. 따라서 인덱스 구성과 힌트 사용이 적절한지에 대한 검토가 필요합니다.

 

INDEX_NAME          COLUMN LIST
-----------------   -----------------
idx_mbox_status     userid, status
idx_mbox_senddate   userid, senddate

 

인덱스 구성만 보면, 해당 SQL은 IDX_MBOX_SENDDATE 인덱스보다는 USER_ID, STATUS 컬럼으로 구성된 IDX_MBOX_STATUS 인덱스를 사용하는 것이 유리해 보입니다.

 

그런데 조건 절에 적합한 인덱스 구성만 확인하고, 해당 SQL의 의미를 파악하지 않은 채 성능 개선을 하려고 한다면, 잘못된 개선안을 도출할 가능성이 높습니다.

 

INDEX_DESC 힌트의 인덱스 명만을 변경하는 것으로 결론을 도출한다면, 아주 치명적인 실수를 저지를 수 있습니다. 왜냐하면, SQL의 작성 의도와는 전혀 다른 데이터가 추출될 수도 있기 때문입니다. 물론, 경우에 따라 USERID, STATUS로 구성된 인덱스를 이용하는 것이 올바른 방법일 수도 있습니다. 그러나 이와 같은 개선안은 "USER_ID, SENDDATE 컬럼으로 정렬이 필요없다"는 전제 조건을 반족해야 합니다. 이러한 업무적인 내용은 개발 담당자 또는 업무 운영자에게 문의할 필요가 있으며, 그렇지 못한 경우라면 SQL 자체에서 작성 의도를 찾아봐야 합니다. 그렇다면, 해당 SQL의 작성 의도를 파악해보겠습니다.

 

- ROWNUM을 사용하였으므로 PAGINATION QUERY일 가능성이 높다.

- INDEX_DESC 힌트는 ORDER BY DESC를 대체하려는 것으로 보인다.

- 인덱스 컬럼 정보와 힌트를 고려해 보았을 때, 의미사응로는 "ORDER BY USER_ID DESC, SEND_DATE DESC"가 내포된 것으로 보인다.

 

앞에서 파악한 SQL의 의미를 통해, 추출하고자 하는 데이ㅏ터는 조건에 만족하는 "최근 발송된" ROWNUM <= :B3개의 메일 중에서 RNUM >= :B4인 메일이라는 것을 알 수 있습니다. 즉, INDEX_DESC 힌트에 내포된 의미를 풀어보면 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT x.*
FROM (
  SELECT a.*,
    ROWNUM AS RNUM
  FROM (
    SELECT a.*
    FROM tbs_mbox a
    WHERE userid = :b1
      AND status = :b2
    ORDER BY a.userid DESC,
      a.senddate DESC
        ) a
  WHERE ROWNUM <= :b3
     ) x
WHERE
  x.rnum >= :b4

 

재작성한 SQL을 보면, 원본 SQL에서 INDEX_DESC 힌트의 인덱스 명만을 변경하는 것은 올바른 튜닝 방법이 아니라는 것을 알 수 있습니다. 왜냐하면, INDEX_DESC 힌트에 사용된 IDX_MBOX_SENDDATE 인덱스는 조건에 대한 처리뿐만 아니라 ORDER BY DESC  역할도 수행하기 때문입니다. 따라서 SQL의 의미를 파악한 후에 도출될 수 있는 개선안 중의 하나는 IDX_MBOX_SENDDATE 인덱스에 STATUS 컬럼을 추가하여 재 생성하는 것입니다. 이와 같이 SQL 튜닝을 위해서 가장 필요한 것은 SQL을 정확하게 이해하는 것입니다. SQL의 의미를 파악해야만 올바른 SQL 개선안이 도출될 뿐만 아니라, 때로는 SQL의 의미 파악 자체가 SQL 개선으로 이어지는 경우도 있기 때문입니다.

 

개발자나 DBA 들 중의 일부는 SQL 튜닝의 세계에 뛰어드는 것을 매우 어려워합니다. 왜냐하면, "SQL 튜닝"이란 용어 자체가 친근하지 않을 뿐 아니라 SQL 튜닝의 시작점을 정하기도 쉽지 않기 때문입니다. SQL의 의미를 해석하는 것으로부터, 이미 SQL 튜닝이 시작됩니다. 


블로그 이미지

낭만가을

,

쿼리 튜닝은 온라인 SQL이냐 대용량 배치 SQL이냐에 따라 튜닝방법이 달라집니다. 하지만 대용량 배치는 프로그램 수가 많지 않은 편입니다. 온라인 SQL 튜닝에서도 관점에 따라 튜닝방법이 다르게 됩니다. 예를 들어 Peak Time에 Insert 문이나 Update 문, Select 문이 집중적으로 몰릴 때의 튜닝 방법이 있고, 단순히 SQL 하나에 집중해서 응답시간을 최소화하는 튜닝방법이 있습니다. 본 포스팅은 일반적으로 가장 많은 튜닝 사례에 해당하는 Select문 튜닝방법론을 기술한 포스팅입니다. 학습 용도로 작성한 포스팅으로 본 포스팅의 원본 출처는 Science of Database 블로그 SQL 튜닝방법론 입니다.




온라인 Select문 튜닝 방법론

온라인 SQL의 튜닝방법은 여러 가지가 있을 수 있습니다. 하지만 그 중에서 가장 기초적이고, 기본적인 방법입니다. 아래의 7가지 항목을 점검하고 약한 곳을 보강하면 됩니다. 이글은 SQL 튜닝책을 두 권정도 본 사람들을 위한 것입니다. 튜닝에 자신있는 사람들은 볼 필요가 없습니다.


1. 적절한 인덱스를 사용하여 Block I/O를 최소화 하라

조인이 없는 경우는 적절한 인덱스를 사용하는 것만으로도 상당한 효과를 볼 수 있습니다. 조인이 있는 경우는 특히 Driving(선행) 집합에 신경을 써야합니다. 왜냐하면 Nested Loop 조인을 사용했고, 선행집합의 건수가 많다면, 후행집합의 조인의 시도횟수가 증가하므로 성능이 느려지게 됩니다. 따라서 적절한 인덱스를 이용하여 선행집합의 건수를 줄인다면, 혹은 가장 적은 집합을 선행으로 놓는다면, 후행집합으로의 조인건수는 줄어들게 됩니다. 물론 이때에도 후행집합의 적절한 인덱스는 필수 조건입니다. Driving 집합의 Block I/O를 줄이기 위하여 최적화된 인덱스가 없다면 생성하고, 있다면 그것을 사용하십시오. 다시 말해 최적의 Access Path를 만드는 것이 좋습니다.  


운영중인 시스템이라면 최적의 Access Path를 위해 인덱스를 변경하거나 생성할 때는 주의해야 합니다. 현재 튜닝하고 있는 SQL에 최적화된 인덱스를 생성하더라도 다른 SQL에 악영향을 줄 수 있기 때문입니다. 인덱스를 생성하거나 변경할 때는 그 테이블을 사용하는 다른 SQL의 실행계획이 변경되지 않는지 각별히 신경써야 합니다. 이런 이유 때문에 개발과정에서 효율적인 인덱스 설계가 중요시 됩니다.


2. 조인방법과 조인순서를 최적화 하라.

온라인에서 사용하는 Select문은 좁은 범위를 검색하는 경우가 많습니다. 이럴때는 대부분 Nested Loop Join이 유리합니다. 그러므로 조인건수가 소량인 SQL에 Hash Join이나 Sort Merge Join이 발견되면 Nested Loop Join으로 변경하는 것이 더 유리한지 검토해야 합니다. 물론 여기서도 Nested Loop 조인에 관해서만 다룹니다.


Nested Loop 조인에서 가장 중요한 것은 조인 순서입니다. From절에 테이블(집합)이 두 개라면 후행집합의 관점에서는 적절한 인덱스만 존재한다면 그것으로 족합니다. 만약 From절에 테이블(집합)이 세 개 이상이라면 조인순서를 변경할 수 있는지에 대한 두 가지 원리를 사용하면 좋습니다. 두 가지 원리는 아래의 단락에서 소개됩니다. 아무리 조인할 집합이 많다고 하더라도 이 두 가지의 원리는 동일하게 적용될 수 있습니다. 두 가지 원리를 이용할 때 필요하다면 Leading 힌트를 사용해야 합니다.


첫번째, 후행집합에 적절한 인덱스가 없는 경우에 조인순서를 바꾸면, 최적의 인덱스를 사용할 수 있는 경우가 많습니다. 예컨대, 튜닝전의 조인순서가 A → B → C라고 하면, 중간 집합인 B에 적절한 인덱스가 없고 오히려 C에 적절한 인덱스가 존재하는 경우가 있습니다. 이럴 때는 B에 인덱스를 무작정 생성하지 말고, 조인순서를 A → C → B로 바꿀 수 있는지, 바꾸는 것이 더 효율적인지 검증하면 좋습니다. 조인 순서만 바꿔주어도 일량이 획기적으로 줄어드는 경우가 많습니다. 만약 조인순서를 바꿀 수 없거나, C를 중간집합으로 하는 것이 비효율적이라면, B를 중간집합으로 유지하고 적절한 인덱스를 사용해야 합니다.


두번째, 조인되는 집합 중 특정 인덱스에서 Block I/O가 증가하는 경우에 조인순서의 변경을 검토하면 됩니다. 이때 10046 Trace나 DBMS_XPLAN.Display_Corsor를 이용하면 조인집합들의 Block I/O량을 관찰할 수 있습니다. 예를 들어, 튜닝전에 조인순서가 A → B → C라고 하고, 집합 B에서 Block I/O량이 증가하면 A → C → B로 바꾸면 일량이 줄어드는 경우가 많습니다. C를 먼저 조인(Filter)하여 선행집합(B의 입장에서는 C가 선행이다)의 건수를 줄이고 B에 조인하면 성능이 향상됩니다.


3. Table Access(Random Access)를 최소화하라.

Random Access란 rowid로 테이블을 액세스하는 것을 말합니다. 1번과 2번을 최적화했다면 Random Access도 자동으로 많이 줄어들었을 것입니다. 하지만 그것이 끝은 아닙니다. 여전히 성능이 만족스럽지 못한다면 Random Access 횟수를 줄이는 것을 간과해서는 안됩니다.


인덱스를 사용하면 rowid가 자동으로 획득됩니다. 만약 인덱스에 없는 칼럼을 Select 해야 한다면 rowid로 테이블을 액세스 해야합니다. 이때 테이블로액세스해야 할 건수가 많고, 인덱스 컬럼순으로 테이블이 sort되어 있지 않다면 성능이 매우 저하됩니다. 왜냐하면 테이블이 인덱스 기준으로 sort되어 있지 않기 때문에 테이블을 방문할 때마다 서로 다른 블럭을 읽어야 하기 때문입니다.


비유적으로 설명해보겠습니다. 우리가 심부름을 할 때 세 군대의 상점(A, B, C)을 들러야 한다고 치겠습니다. 그 상점들이 모두 한 건물 내부에 존재한다면 얼마나 좋겠습니까? 그 심부름은 매우 빠른 시간에 끝날 것입니다. 하지만 반대로 상점 A는 부산에 있고 상점 B는 대구에 있고, 상점 C는 서울에 있다면? 만약 당신의 성격이 매우 좋아서 그 심부름을 한다고 해도 시간이 많이 걸릴 것입니다. Random Access도 마찬가지 입니다. 인덱스의 rowid로 테이블을 방문할 때 테이블이 인덱스기준으로 sort되어 상점처럼 다닥다닥 붙어있다면 성능은 매우 빠르고, 흩어져 있을수록 성능은 느려집니다. (오라클에서는 테이블이 인덱스 기준으로 sort되어 있는 정도를 Clustering Factor라고 합니다) 바로 이런 이유 때문에 index scan 보다는 Table Scan이 느린 것입니다. 따라서 우리는 Random Access의 부하를 최소화해야 합니다.


Random Access의 부하를 줄이는 방법은 네가지 입니다. 첫번째, 테이블의 종류를 변경하는 방법입니다. IOT나 클러스터를 이용하면 Clustering Factor가 극단적으로 좋아집니다. 또한 파티션을 이용하면 같은 범위의 데이터를 밀집시킬 수 있습니다. 두 번째, 효율적인 인덱스를 사용하거나 조인방법과 순서를 조정하여 Table Access를 최소화하는 방법입니다. 이 방법은 1번과 2번에서 이미 설명되었습니다. 세번째, 인덱스에 칼럼을 추가하여 Table Access를 방지하는 방법입니다. 예를 들어 Select절의 특정 칼럼 때문에 테이블이 액세스 된다면, 인덱스의 마지막에 그 컬럼을 추가하면 됩니다. 네 번째, 인덱스만 액세스하고 테이블로의 액세스는 모든 조인을 끝내고 마지막에 시도하여 Random Access의 횟수를 줄이는 방법입니다.



4. Sort나 Hash 작업을 최소화하라.

1,2,3번을 통하여 최적의 Access Path와 Join을 사용했다면, Block I/O의 관점에서는 튜닝이 끝난 것입니다. 하지만 1,2,3번이 모두 해결되었다 해도 Order by나 Group By 때문에 성능이 저하될 수 있습니다. 특히 결과가 많은 경우, sort는 치명적입니다.


인덱스가 sort 되어 있다는 특성을 이용하면 order by 작업을 대신할 수 있습니다. Group By도 sort가 발생하는데 group by 단위와 인덱스의 컬럼이 동일하다면 sort는 발생하지 않습니다. 최적의 인덱스를 사용하면 Access Path를 개선하는 효과뿐만 아니라 Sort의 부하도 없어집니다.


Union All을 제외한 집합연산(Union, Minus, Intersect)를 사용하면 Sort Unique 혹은 Hash Unique가 발생하게 됩니다. Union은 Union All로 바꿀수 없는지 검토해야 하고, Minus는 Not Exists 서브 쿼리를 이용하여 Anti Join으로 바꿀 수 없는지 고려해야 합니다. Intersect는 교집합이므로 조인으로 바꿀 수 있는지 검토해야 합니다아주 가끔 Distinct를 사용한 SQL이 눈에 띄는데 이 또한 Sort unique 혹은 Hash Unique를 발생시킵니다. 모델러나 설계자의 문의하여 Distinct를 제거할 방법이 없는지 문의해야 합니다.


Oracle 10g 부터는 Hash Group By가 발생할 수 있는데, 이미 적절한 인덱스를 사용하는 경우라면 Hash Group By를 사용할 필요는 없습니다. 이런 경우 NO_USE_HASH_AGGREGATION 힌트를 사용하면 Sort Group By 로 바꿀수 있습니다. 이렇게 해주면 실행계획에 "SORT GROUP BY NOSORT" Operation이 발생하며, Sort나 Hashing 작업이 전혀 발생하지 않습니다. Group By의 부하를 해결하는 또 하나의 방법은 스칼라 서브쿼리를 사용하는 것입니다. 조인을 사용하면 Sum 값을 구하기 위해 Group By가 필수적입니다. 하지만 스칼라 서브쿼리를 사용하면 Group By를 사용하지 않고도 sum이나 Min/Max 값을 구할 수 있습니다. 또한 분석함수의 Ranking Family(rank, dens_rank, row_number)를 최적화된 인덱스와 같이 사용하면 Group By나 Sort를 하지 않고도 Min/Max 값을 구할수 있습니다. 이때는 실행계획에 "WINDOW NOSORT" Operation이 발생합니다.



5. 한 블록은 한번만 Scan하고 끝내라.

같은 데이터를 반복적으로 Scan하는 SQL이 의외로 많습니다. 대표적인 경우가 Union All로 분리되었지만 실제로는 그럴 필요가 없는 경우입니다. 예를 들어 Where 절에 구분코드가 1일 때, 2일 때, 3일 때 별로 SQL이 나누어져 있는 경우 입니다. Where 절을 구분코드 in (1, 2, 3)으로 처리하고, Select절에서 Decode나 Case 문을 사용하여 구분코드별로 처리해 준다면 Union All은 필요 없습니다. Unon All을 사용하는 또 한가지의 경우는 Sub Total(소계)와 Grand Total(총계)를 구해야 하는 경우입니다. 이 경우도 Rollup/Cube나 Grouping Sets를 Group By절에 사용한다면 소계나 총계를 위한 별도의 Select문을 실행시킬 필요는 없습니다. 1~4번의 과정은 SQL문의 변경이 없거나 최소화됩니다. 하지만 5번의 경우는 SQL을 통합시켜야 하기 때문에 시간이 많이 소모되며, 많은 사고가 요구되는 창조적인 과정입니다. 여기까지 했다면 진행되었다면 원본 SQL 자체의 튜닝은 완료된 셈입니다.



6. 온라인의 조회화면이라면 페이징 처리는 필수다.

부분범위 처리를 해야합니다. 물론 전체 건을 처리해야 하는 경우는 있을 것입니다. 하지만 조회화면이라면 몇 십만건 혹은 몇 만건이나 되는 결과를 모두 볼 수 없습니다. 따라서 볼 수 있는 단우로 끊어서 출력해야 합니다. 예를 들어 결과 건수가 10만건이라고 해도 최초의 50건을 화면에 먼저 뿌린다면 1,2,3,4 번에서 설명했던 모든 부하(Block I/O의 부하, 조인의 부하, Random Access의 부하, Sort의 부하)를 한꺼번에 감소시킬 수 있습니다. 따라서 가능하면 개발자를 설득하거나 책임자를 설득하여 페이징처리를 하는 것이 바랍직합니다.


페이징 처리를 해도 효과를 볼 수 없는 몇가지 예외가 있습니다. 분석함수를 사용하건, Connect By + Start With를 사용한다면 페이징 처리의 효과는 없습니다. 분석함수의 경우 인라인뷰의 외부로 뺄 수 있다면 부분범위 처리가 가능합니다. Connect By + Start With를 사용한 경우는 부분범위처리가 불가능합니다. 인덱스의 구성을 적절히 하여 Sort를 대신해야 합니다.



7. 답이 틀리면 안된다. SQL을 검증하라

7번은 SQL 자체를 튜닝하는 것은 아닙니다. 하지만 7번을 튜닝 방법에 추가한 이유는 있습니다. 튜닝을 하였음에도 답이 틀린다면, 튜닝을 하지 않은 것보다 못합니다. 그러므로 튜닝 후에 답이 옳은지 항상 검증해야 합니다. 1번~7번 중에 가장 중요한 것이 7번입니다.



방법론 정리

1. 적절한 인덱스를 사용하여 Block I/O를 최소화하라.

2. 조인방법과 조인순서를 최적화 하라.

3. Table Access(Random Access)를 최소화하라.

4. Sort나 Gash 작업은 최소화하라.

5. 한 블록은 한번만 Scan하고 끝내라.

6. 온라인의 조회화면이라면 페이징처리는 필수이다.

7. 답이 틀리면 안된다. SQL을 검증하라.



만약 1~7번을 모두 적용할 수 있는 경우임에도 불구하고 하나라도 빠진다면 그것은 최적화된 SQL이 아닙니다. 물론 튜닝을 할때 위의 1~6번을 항상 적용할 수 있는 것은 아닙니다. 경우에 따라서는 하나만 적용될 수도 있고, 두 개만 적용할 수 있는 SQL도 있습니다. 하지만 1~6을 모두 적용할 수 있는지 꼼꼼히 살펴야 합니다.


위 항목들은 튜닝의 기본 중에 기본입니다. 이것들만 알아도 온라인 조회화면에 사용하는 SQL을 튜닝하는데 어려움이 없을 것입니다. 다시 말해 90%는 해결할 수 있습니다. 그렇다면 나머지 10%는 상황별로 다르게 처리돕니다. 또한 그것들은 책이나 매뉴얼에 나와있지 않기 때문에 경험치이거나 실험과 연구의 결과로 알아내는 것들입니다.

블로그 이미지

낭만가을

,




log 가 뭔지 잘 모르시면 아래 동영상을 참조하시면 됩니다. (영어를 몰라도 이해하기 쉽습니다.)

https://www.youtube.com/watch?v=akXXXx2ahW0

블로그 이미지

낭만가을

,

JVM이란?

프로그래밍/OS 2018. 4. 21. 12:09


우선 JVM이란?


자바 가상 머신이라 부른다.

자바와 운영체제사이에서 중계자 역할을 한다.

자바가 운영체제 종류에 영향받지 않고 돌아갈 수 있도록 한다.

메모리 관리를 자동으로 해준다 (GC)


여기서 중요한 것은 운영체제와 플랫폼 종류에 의존적이지 않고 독립적으로 JAVA프로그램이 실행된다.






위 그림을 설명하면...


Java Compiler(자바 컴파일러)에 의해 Java source(.java) 파일은  Byte code로 변환된다.


Class Loader(클래스 로더)는 이 변환된 Byte code(.class) 파일을 JVM 내로 class를 로드하고 Link작업을 통해 

배치 등 일련의 작업을 한다. 또 런타임시 class를 load한다.


Execution Engine(실행 엔진) 은 Class Loader를 통해 JVM 내부로 넘어와 Runtime Data Area(JVM 메모리)에 배치된 

Byte code들을 명령어 단위로 실행시킨다.


GC(Garbage Collector)는 어플리케이션이 생성한 객체의 생존 여부를 판단하여, 더이상 참조되지 않거나 null 인 객체의 메모리를 해체시켜

메모리 반납을 한다. 


Runtime Data Areas(JVM 메모리) 런타임 데이터 영역은 JVM메모리로 Java 어플리케이션이 실행하면서 할당받은 메모리영역이다.


세분화하자면 6개(Method, Runtime Constant Pool, Heap, Stack, PC Register, Native Method Stack)의 영역으로 나뉜다.




출처 : http://hoonmaro.tistory.com/19



6개 메모리 영역의 용도와 특징


(화질이 좋지 않으니 클릭해서 보시길.)



끝으로 Heap Area를 좀 더 살펴보면....


Young Generation : 객체가 생성될 때 저장된다. 즉 막 생성된 객체들의 인큐베이터이다. 생성된 기간이 흐르고, 우선순위가 낮아지면

                          Young 세대의 객체들은 Old세대로 이동하게 된다. 이 영역에서 객체가 사라질 때는 Minor GC 수행된다.


Old(Tenured) Generation : Young Generation 영역에 있는 객체가 오래되서 저장되는 공간이다.

                                   이 영역에서 객체가 사라질 때는 Major GC(Full GC) 수행된다.


Permanent Generation :  클래스 로더에 의해 로든되는 클래스, 메소드 등에 대한 메타 정보가 저장되는 영역으로 JVM에 의해 사용된다.                                  리플렉션을 사용하여 동적으로 클래스가 로딩되는 경우에 사용된다. 



또 Method와 Runtime Constant Pool , Heap 영역은 모든 스레드에서 공유할 수 있다.

블로그 이미지

낭만가을

,