벤처창업 웹 프로그래밍

Danna Ahn·2022년 10월 26일
1

경영 정보 기반 기술

  • 회사를 경영하며 발생하는 정보를 기반하여 생성된 기술과 규칙,프로세스 등을 말함.

  • 현재 세계 기업 경영은 고객 데이터를 활용한 플랫폼 기업 중심으로 흐름.

비즈니스를 위한 웹 플랫폼 제작을 위한 방법들

  1. CMS : 워드프레스, 줌라 등 이미 완성된 시스템을 기반으로 플랫폼을 구축하는 형태

  2. 직접 개발 : 라이브러리 등을 활용하여 기획, 설계, 구현의 전체 과정을 진행하여 오리지널 시스템을 구축하는 형태

  3. 프레임워크를 통한 개발 : 기획, 설계, 구현의 전체 과정을 진행하지만 이미 구비된 프레임워크를 통해 빠르게 구축하며, 인적자원을 시스템화할 수 있도록 되어있는 형태. 대부분의 기업체, 기관들이 많이 사용.

린 스타트업 이론 기초

  • 린 경영의 3대 원칙 : 리서치 중심 / 고객 중심 / 학문적 접근

    1. 최초의 사업계획, 즉 플랜A를 문서화하라
    2. 사업계획에서 가장 위험한 부분을 식별하라
    3. 사업계획을 체계적으로 검증하라

린 캔버스

1. 문제

  • 가치, 솔루션, 핵심지표의 시작 지점.
  • 고객군이 해결해야 할 1~3가지 핵심 문제 정리.
  • 고객 관점에서 생각하기.
  • 기존 대안들 나열. => 해당 문제를 고객들은 어떻게 처리하는지 알아야 함. => 새로운 서비스의 방향 잡기.
  • 가능성 있는 얼리어답터를 타겟팅.

2. 고객군

  • 목표 고객군 별 특징을 구체적으로 설정

3. 가치

  • UVP (Unique Value Proposition)는 제품이 가진 차별점은 무엇이며, 구입할 가치가 있는 이유를 의미.
  • 핵심가치는 홍보용 랜딩페이지의 헤드라인에 포함될 몇 개의 단어로 정리해야 함.
  • 어차피 스타트업이 만든 제품은 시장에 처음 나온 것이므로 얼리어답터를 타겟해야 함.
  • 고유의 가치 제안
    1. 차별화하라, 그리고 차별화 포인트가 중요한지 확인하라
    1. 얼리어답터를 목표로 삼아라
    2. 제품을 사용했을 때의 혜택에 집중하라 (권위 x, 고객 중심)
    3. 단어를 주의 깊게 선택하라 (키워드 잡기)
    4. '무엇, 누구, 왜'에 답하라
    5. 다른 훌륭한 uvp들을 연구하라
    6. 호소력 있는 선전문구를 만들어라

4. 솔루션

  • 해당 문제에 대한 자신만의 해결방식
  • 다른 요소들의 완성 이후에 솔루션에 대해 언급할 것
  • 고객의 상황과 생각에 관계 없이 제안하려는 것 => solution이 아닌 problem으로 인식될 수 있음

전략 캔버스 작성

인바운드 채널

  • 인바운드 채널 : 블로그 (기업 블로그, 기술 블로그), 검색엔진최적화 (SEO), 전자책, 백서, 웹세미나 (=웨비나)

아웃바운드 채널

  • 아웃바운드 채널 : 검색엔진마케팅 (키워드 광고, 브랜드 검색 광고), 인쇄물/TV 광고, 전시회/박람회, 판촉전화 (콜드콜) => 인스타포스팅처럼 차세대 디지털 인쇄물 (soft copy) 등 등장

직접 판매와 자동화된 판매

  • 초반에 스타트업은 데이터를 확보하기 위해 직접 판매를 통해 학습해야 함
  • 이후 IT 플랫폼, 검색 엔진 플랫폼과 협업하여 판매 자동화 고려
  • 창업 초기, 패시브 인컴을 통한 유입 현금 흐름 -> 기초적인 자본 압박에서 자유롭게 함

린 캔버스 안에서의 위험도 이해

  1. 제품 위험 (p) : 제대로 된 제품을 만드는 것
  • 문제, 솔루션, 가치 제안, 핵심지표 요소와 연관
  1. 고객 위험 (c) : 고객에게 도달하는 경로를 구축하는 것
  • 채널, 고객군 요소와 연관
  1. 시장 위험 (m) : 존속할 수 있는 사업을 구축하는 것
  • 경쟁우위, 비용구조, 수익원 요소와 연관

사업 모델 순위의 가중치 순서

  1. 고객 불편 수준 (문제) : 제품이 가장 필요할 것으로 생각하는 고객순 나열.
  2. 접근 용이성 (채널)
  3. 가격/수익 (수익원 / 비용 구조) : 수익을 극대화할 수 있는 고객군.
  4. 시장 규모 (고객군) : 시장 규모가 충분히 큰 고객군.
  5. 실현 가능성 (솔루션) : 구현 가능성, 고객에게 제공할 최소 기능 포함 여부 확인.

고객 인터뷰

초기엔 설문 조사나 포커스 그룹 인터뷰가 아닌, 시장 최전선에서 고객 인터뷰를 진행할 것.

  • 설문 조사는 물어야 할 질문을 이미 안다고 가정. but 최초 기획에서는 상상도 못한 대답을 하는 경우가 많음.
  • 최고의 초기 학습은 개방형 질문에서 얻을 수 있음.

중요 포인트

  1. 제품 설명이 아닌 학습을 중심으로 대화의 틀을 잡음.
  • 고객을 학습/연구 대상으로 삼아 빠르게 변화하는 시장 needs와 wants의 흐름을 파악.
  1. 고객에게 무엇을 원하는지 묻지 말고 행동만을 살펴 볼 것.
  • 환불을 보증하고, 제품 선지불이나 부분 지불을 권해볼 것.
  • 환불보증부로 서비스를 진행하면, 초기 현금 흐름에도 도움을 줌.
  • 이를 통한 3개월 이상의 매출 트래픽 -> 신용보증재단 등에서 저리 사업자 대출도 가능.
  1. 다양한 가망 고객을 만나는 것이 좋음.
  • 가능하면 대면 인터뷰.
  • 아는 사람부터 시작하여 가지치기.
  • 인터뷰 참가비는 X
  • 인터뷰에 다른 사람과 동반 (객관성 확보, 시간 관리)
  • 인터뷰 직후 결과를 문서화할 것.
  • 인터뷰 일정 관리를 위해서 오후 시간을 비우거나 이메일로 인터뷰 요청을 위한 문장으 미리 만들어 놓음.

프로그램 개발의 프로세스

유즈 케이스 작성

  • 고객의 요구사항 분석을 통해 유즈 케이스를 추출해내고 이것을 소프트웨어 설계에 활용.
  • 시나리오를 작성해서 필요한 기능을 뽑아 냄.

서버 기반 언어 기초 : 플랫폼 개발 언어에 대한 이해

  • 컴퓨터는 클라이언트(서비스를 받음)서버(서비스를 줌)로 나뉨.

  • 웹 프로그래밍은 데이터를 입력받고 고객을 접하는 프론트 엔드와 데이터를 처리하고 저장하며 기능을 처리하는 백 엔드로 구분.

php

  • hypertext processor PHP

  • 동적 웹 페이지를 만들기 위해 설계되었으며, 이를 구현하기 위해 php로 작성된 코드를 html 소스 문서 안에 넣으면 php 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성.

  • 동적 웹 페이지 : 데이터에 의해 플랫폼의 특정 영역 내용이 지속적으로 변경되는 웹 페이지를 의미.

php 모듈 개발과 관련된 개념 요소들

  • 데이터 (리터럴)
  • 변수 (일반변수 [지역 변수, 글로벌 변수], 세션 변수)
  • 상수
  • 배열 / 연관 배열
  • 함수 / 사용자 정의 함수
  • 클래스와 객체

1. 리터럴 (데이터)

  • 문자 리터럴 / 숫자 리터럴
  • 문자 리터럴 : 문자 데이터를 다루며 연산 기능은 없음.
  • 숫자 리터럴 : 4칙 연산, 논리 연산 등 다양한 연산 기능은 없음.
  • 리터럴은 변수에 저장할 수 있음.

2. 변수

  • 변수 : 데이터를 저장하기 위해 개발자와 언어엔진에 의해 이름을 할당 받은 메모리 공간을 의미.
  • 변수는 새로운 값에 의해 기존 데이터를 overwrite 가능.
  • 지역 변수는 반복문 등의 안쪽에서 선언, 반복문 종료시 사라짐.
  • $변수명

3. 세션 변수

  • 세션은 모든 정보가 사용자 측의 컴퓨터에 저장되는 쿠키와 달리 웹 서버에 정보를 저장하고 사용자 측에는 접근할 수 있는 키 값을 저장한다.

  • 과거에는 쿠키 때문에 해킹 당하는 경우가 있었으며, 세션은 서버네 저장하기에 비용 증가로 잘 안 썼음. 지금은 클라우드 등 자원들의 비용이 저렴해져서 주로 세션만 사용.

  • 웹 서버에 데이터가 저장되고 필요할 때마다 브라우저에서 키 값으로 서버에 요청. 브라우저를 종료하는 시점에서 세션이 삭제가 되도록 설정 가능.

  • session_start() 함수로 시작 
  • 세션 변수는 페이지 간 이동을 해도 변수 값이 사라지지 않음.

4. 상수

  • 변하지 않는 고정값.
  • define("X", "Hello World!");

5. 배열

  • 배열 : map으로 이루어진 순서가 있는 집합. map은 한 쌍의 key, value로 이루어짐.
  • $arr[0] = "apple"; $arr[1] = "banana";
  • $arr = array("apple", "banana");

6. 연관 배열

  • 숫자뿐만 아니라 문자열까지도 배열 요소의 인덱스로 사용할 수 있음.
  • 만약, 정수와 문자열 외의 다른 타입의 값을 키 값으로 사용하면, 내부적으로 정수와 문자열로 타입 변환이 이루어짐.
  • $arr["banana"] = 2000; 
  • $arr = array("apple" => 1000, "banana" => 2000);

7. 클래스와 객체

  • 객체에 대한 설계도
    - 객체 : 런타임 위에서 작동되는 기능 + 저장 능력
  • 클래스 이름은 PSR에 따라 대문자로 시작하고, 단어 간의 연결마다 대문자를 사용하는 StudlyCaps 형식을 따름. (= Pascal Case)
  • 클래스는 object를 중심으로 특정 역할을 하는 타입을 말함.
  • 내부적으로는 멤버변수메소드를 가질 수 있음.
  • 클래스 타입의 변수를 인스턴스라고 부름.
  • 멤버 변수 = 속성 = 프로퍼티
  • 메소드 = 클래스 안에서 정의된 함수

상속과 트레이트

  • 상속 : 이미 만들어져 있는 상위의 클래스로부터 코드를 물려받는 것을 의미
    -> 자식 클래스명 extends 부모 클래스명
  • 트레이트 : 인터페이스와 같은 기능. 수직 상속은 하나만 가능하므로, 수평 상속을 통해 코드 재사용성 극대화.
    -> trait SayMorning{;}
    -> Class Guest extends User{ use SayMorning;}

접근 제한자

1) public : 모든 접근 허용
2) protected : 같은 폴더에 있는 객체와 상속관계의 객체들만 허용
3) private : 현재 객체 내에서만 허용

php 내장 함수

  • 컴퓨터 언어는 설치시 자동으로 설치되는 내장함수와 추가적인 설치를 해야 하는 외장함수가 있음.

  • 보통 외장함수의 경우 라이브러리라고 호칭함.

  • explode() => split() 메서드 in python
    $string = "사과,귤,감,밤";
    $array = explode(',',$string);
    
  • implode() => join() 메서드 in python
  • print_r() => 배열 구조 출력
    
  • require() => 외장 데이터 사용 가능
    
  • checkdate() => 날짜가 유효한 양력 날짜인지 판단
    
  • nl2br() => enter를 br 태그로 자동 변환
    
  • id_dir() => 해당 디렉토리가 존재하는지 알려주는 정보 함수
    
  • mkdir() => 디렉토리를 만들어주는 함수
    
  • header() => 브라우저의 주소창 로케이션 내용을 설정
    
  • isset($_POST["name"]) => name에 데이터가 존재하면 true

사용자 정의 함수

  • function print_copyright() {
    print "<FONT size = 2>";
    print "Copyright 2022 Danha All rights reserved.";
    print "</FONT>";}

데이터 전달 과정

1) post

  • 페이지 단위로 큰 데이터 전달할 때 사용.

2) get

  • url을 활용해서 데이터 전달.
  • 검색 엔진이나 저장된 데이터베이스에서 원하는 데이터를 찾고자 할 때 사용.
  • 데이터 전달에 제한이 있음.
  • 보안 취약.

관계형 데이터베이스의 특징

  • DB를 구성하는 개체(entity)관계(relationship) 모두를 relation이라는 표로 표현.
  • 장점 : 간결하고 보기 편리함. 다른 DB로 변환이 용이. 대부분의 메이저 데이터베이스 제품군이 관계형 데이터베이스.
  • 단점 : 성능이 다소 떨어짐.

데이터베이스 테이블 구성 요소

1) 기본키

  • 후보키 중에서 선택한 주키 (main key)
  • 모든 사용자가 unique하게 가지고 있는 속성
  • null 값을 가질 수 없음.
  • 외래키 : 다른 릴레이견의 기본키를 참조하는 속성. 외래키를 통해 테이블 간 연결이 가능.

2) 테이블(릴레이션) = 개체

3) 열 = 속성

  • 데이터베이스를 구성하는 가장 작은 논리적 단위.
  • 파일 구조 상의 데이터 항목 또는 데이터 필드에 해당.
  • 변수에 비유 가능

4) 행 = 튜플 = 레코드

  • 한 사람의 데이터는 행 단위로 저장되므로 하나의 데이터는 결국 튜플.
  • 속성의 모임으로 구성. 여러 셀이 모여 튜플을 구성.

PHP 범용 DB 접속 개체 PDO

PDO (PHP Data Object) : 여러 데이터베이스를 제어하는 방법을 표준화한 것

  • DB 종류에 따라 다른 드라이브, 드라이브 종류에 따라 다른 API를 사용했지만 PDO로는 같은 방법으로 범용 가능

  • MySQLi는 MySQL DB에서만 작동.

  • PDO도 MySQLi와 마찬가지로 Prepared Statement 지원.
    Prepared Statement : 자주 사용되는 SQL을 DB가 이해하기 쉬운 형태로 해석해놓은 것. 일종의 템플릿 형식. 효율성 면에서 좋고, SQLInjection에 강함.

profile
빨간 머리 개발자

1개의 댓글

comment-user-thumbnail
2022년 10월 31일

핵심 인재로 스카우트 하겠습니다. 010-9275-4268 로 문자주세요.

답글 달기