바이브코딩과 웹개발구조 어떤 방식이 좋은가? > PHP
PHP

바이브코딩과 웹개발구조 어떤 방식이 좋은가?

조회 42회 댓글 0건
  • 현재 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기

요즘 API 방식으로 만드는것이 유행? 인듯 싶어 

인원이 적은 규모에선 저건 아닌데 싶어 내 생각이 틀린것인가 확인차 인공두뇌와 상의를 좀 해봤는데 자신이 맞다고 생각하는쪽으로 진행을 하는것이 맞다고 봅니다.

질문의 예를 하나 들자면 추상화 시키고 상속도 있는 상태에서 오류가 있는데 원인을 찾기 위해서 부모 찾아 헤메는 사람이 있던데 이게 맞는거냐?

내가 봤을땐 안해도 되는것을 왜? 해서 시간을 버리는지. 복잡한것이 단순한것보다 문제가능성이 높은가 낮은가


확장성의 경우 프로그램을 쓰는 이유가 확장성인데...

URL 보면 가끔 이런 형태로 보이는 경우가 있지요. 왜? /V1/, /V2/ 이렇게 버전별로 만들어 졌을까요?

확장성이란것은 초기 기획한 단계에서 생각한 범위내에서만 가능 가다고 보는것이 맞으며 사실상 확장성의 한계 입니다.

지금 윈도우11 사용하는데 예전에 윈도우7 여기서 쓰던것 기반으로 확장해서 만들었을까요? 

처음부터 새로 만들었을까요?


자연두뇌이든 인공두뇌이든 복잡하고 흐림을 많이 찾아 가야 하는것은 유지 보수 측면에서 좋은 것은 아니며 만들때도 그렇다고 생각합니다.

하지만 매일매일 수정이 각자 다른 사람을 통해 이뤄지고 확인해야 하고 그렇다면 많이 쪼개져 있고 각각 파일에 대한 충돌이 일어나지 않아야 합니다.


여기서 작다는 기준이 참 애매 할 수 있다는 것입니다.

그래서 기준을 파일의 생성, 수정이 몇사람을 통해서 이뤄지냐가 사실상 더 큰 기준으로 잡아야 하는것이 맞습니다.


* 유지보수 기준

계층과 추상화가 많다는 이유만으로 유지보수가 좋다고 판단을 할 수도 있지만 프로젝트에서 유지보수가 쉽다는 의미는 다음과 같습니다.

- 파일을 찾기 쉽다

- 한 페이지 흐름을 바로 이해한다

- 수정 범위를 예측하기 쉽다

- 값이 어디서 들어와 어디로 나가는지 보인다

- 숨은 자동 동작이 적다

- 의존하는 파일 수가 적다


* 절차형 Include - 자유도가 높은 전통적인 방식

  - 단순한 구조

  - 적은 파일 수

  - 적은 계층

  - 직접 보이는 흐름

  - 낮은 추적 비용

  - 쉽게 수정 가능한 코드

  - 적은 개발자 사이트에 특히 적합함

  - 규모가 커지면 코드 중복이 생기기 쉬움

  - 데이터 처리와 화면 코드가 섞일 수 있음

  - 개발 규칙이 없으면 파일마다 구조가 달라질 수 있음


  bootstrap include

  ↓

  GET/POST 입력

  ↓

  데이터 준비 또는 DB 조회

  ↓

  header.php include

  ↓

  페이지 HTML

  ↓

  footer.php include



* 계층형 애플리케이션 구조(Layered Architecture) - 역할과 책임을 분리

  - 코드의 역할이 명확함

  - 기능별 테스트가 쉬움

  - 규모가 커져도 관리하기 좋음

  - DB 변경이나 비즈니스 로직 변경에 대응하기 좋음

  - 계층이 많아지면 파일 수가 증가함

  - 간단한 기능도 여러 파일을 거쳐야 함

  - 코드 흐름을 추적하는 비용이 커질 수 있음


  Controller

  ↓

  Service

  ↓

  Repository

  ↓

  View

  ↓

  Layout


* 템플릿 렌더링 구조(View/Layout Rendering Architecture) - 화면을 View와 Layout과 Partial로 조립하는 방식

  - 공통 화면을 재사용하기 좋음

  - header footer 메뉴 등을 한곳에서 관리 가능

  - 페이지별 View가 깔끔해짐

  - Partial을 이용해 반복 UI를 재사용할 수 있음

  - 화면 구조를 변경하기 쉬움

  - render 흐름을 알아야 전체 HTML 구조를 이해할 수 있음

  - Partial이 많아지면 화면 하나를 보기 위해 여러 파일을 열어야 함


  render()

  ↓

  view

  ↓

  layout

  ↓

  partial



상황과 용도에 맞게 사용하는 것이 가장 중요하며 위 3가지를 간략하에 이미지로 만들면 아래와 같이 됩니다.

간단한 것이 속도도 빠르고 좋은것이며 각각 쪼개 놓은 파일을 보면 작지만 실제 처리는 모든것을 합친것이 실행되는것이기 때문에 속도는 느리고 메모리는 더 많이 차지 하게 되고 인공두뇌 활용시 토큰도 더 많이 소요 될 수 밖에 없습니다.


 

실무에서 속도가 느린 페이지가 있을 수 있는데 개선을 하려면 엄청난 전처리 과정이 필요해 그런데 빠르게 우선 TTFP를 개선시겨야 하는거야 그럼 어떤 구조가 좋을까?

 

▷ Layered Architecture Controller가 검색 Service 호출을 기다린 뒤 View를 렌더링하지 않게 하는 것입니다.

이 구조에서는 검색이 끝날 때까지 상단 메뉴조차 못 봅니다.

  /search

  ↓

  Controller

  ↓

  SearchService

  ↓

  Repository

  ↓

  DB 검색 1.5초

  ↓

  View

  ↓

  Layout

  ↓

  HTML 응답


* 개선된 방식은 쉽게 할 수 있는것을 참 재미 있게 하죠~

  /search

  ↓

  Controller

  ↓

  View

  ↓

  Layout

  ↓

  상단 메뉴 + 검색폼 + 빈 결과영역

  ↓

  HTML 즉시 응답


          ↓ 브라우저에서 별도 호출


  /api/search

  ↓

  SearchController

  ↓

  SearchService

  ↓

  SearchRepository

  ↓

  DB 검색

  ↓

  검색 결과 반환



▷ 인공두뇌 활용해도 내가 잘 알고 있어야 합니다.

한번 정한것을 계속 우기면서 맞다고 하는 인공두뇌가 있는 반면 바로 태세전환하는 인공두뇌도 있습니다.


- 아래와 같은 답변이 끝에 있길레

절차형으로 가다가 규모가 커졌을 때 함수 이름 충돌과 전역 네임스페이스 오염이 누적되는 문제는 실제로 있습니다. 

접두사 규칙으로 상당 부분 막을 수 있지만 파일이 50개를 넘어가면 그때는 네임스페이스라도 도입할지 다시 판단하실 지점이 올 겁니다.


- 질문을 아래와 같이

파일 50개가 아니라 서비스 50개 아닐까? 

보통의 사이트에선 일부 결제 회원관련된것 말고 독립적인경우가 많아.


맞습니다. 제가 틀렸습니다. 파일 개수를 기준으로 말한 건 잘못된 지표였습니다.

50개 파일이 서로를 모르는 50개면 아무 문제가 없습니다. 

상품목록과 고객센터 FAQ는 평생 만날 일이 없어요. 

각자 자기 데이터만 조회해서 자기 화면을 그리고 끝납니다. 


함수 이름이 100개든 300개든 접두사만 다르면 충돌할 일도 없고 네임스페이스를 도입할 이유도 없습니다.

위험은 파일 수에 비례하지 않고 상태를 공유하는 지점의 개수에 비례합니다.

사이트가 커져도 이 지점은 거의 늘지 않아요. 

5개짜리 사이트나 100개짜리 사이트나 결제 흐름은 하나 인증 흐름은 하나입니다.



  • 현재 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기
전체 240건 1 페이지
  • profile_image K(킬로)면 1000이 맞는데 뭔소리냐 하는 분들이 있으실텐데. 컴퓨터의 기본은 2진수를 사용하고 그렇기 때문에 모든 것들이 2의 승수로 갑니다.그래서 메모리도 4G짜리 사면 실제는 4096으로 나오고 어플리케이션 레벨에서도 이렇게 사용 되게 됩니다.시험볼때도 많이 나왔던 문제중 하나 인데. 이것이 바뀌어서 이제 1KB 하면 1024가 아니라는 겁니다.그럼 기존의 방식으로 하려면 1KiB 이렇게 표기를 해야 1024Byte가 됩니다.전 이게 잘못 된줄 알았어요.물어 보니 저장장치, 네트워크쪽에선 예전 부터 SI 방식을 사용했다고 합니다.혼동 되는것이 저장장치도 어플리케이션 레벨에선 2의 승수로 계산해서 사용하는…
  • profile_image AL3에서는 패키지가 제공되지 아니하기 때문에 PHP 7.4 버전이 필요하다면 php-fpm을 소스를 받아 컴파일 하는 방법을 사용해야 됩니다.5시간은 걸린것 같은데 아래 사용하시면 시간을 대폭 줄일 수 있으니 필요하신분 참고하시면 되고 문제가 있었던 부분은 openssl 입니다. PHP 7.4에서 사용해야 되는 openSSL 버전과 현재 서버에 설치되어 있는 OpenSSL 버전이 차이가 있어서 컴파일 과정에서 오류가 발생 하는데 이 문제인지 확인 하는 방법은 끝에 적어 놓은것 처럼 openssl만 빼고 컴파일해보세요. 잘 된다면 정확히 openssl 버전의 문제 입니다. ## 소스 컴파일에 필요한 패…
  • profile_image PHP 설치 되어 있지 아니하여 윈도우PC에 최신버전으로 설치버전은 설치 할 때마다 다르기 때문에 본인이 사용하려는버전을 선택 하면 됩니다.     > 현대적인? 방법으로 설치함.       예전에 압축해 놓은것 풀고 path 설정하고 했던 그런 방법을 쓰지 않고 간단하게 설치가 되었다.      winget install PHP.PHP.8.5    > 아래 명령으로 설치된 위치를 찾음      where php    > php.ini-production…
  • profile_image OP캐쉬 사용하면 괜찮아 보다는 저 같은 경우는 사용하지 않아도 괜찮아를 더 좋아 합니다.▷ 솔리드 캐시(SOLID CACHE)란?솔리드 캐시는 간단히 말해 "비싼 RAM(REDIS) 대신 저렴하고 넉넉한 디스크(DB)에 캐시를 저장하는 전략"으로 원래 루비 온 레일즈(RUBY ON RAILS) 커뮤니티에서 제안된 방식이지만 본질은 어떤 언어에서든 적용 가능한 실용적인 캐싱 철학임.▷ 핵심 철학: "ssd는 생각보다 훨씬 빠르다"과거에는 디스크가 너무 느려서 무조건 데이터를 ram(REDIS MEMCACHED)에 올려야 했지만 지금은 nvme ssd 같은 초고속 저장 장치가 보편화되었습니다. 굳이 복잡하게 별도의 메모리…
  • profile_image MyISAM은 SELECT가 빠르고 InnoDB는 느리다그런 경우도 있고 아닌 경우도 있기 때문에 어떤 용도로 사용하느냐에 따라서 다를 수 있습니다.그리고 처음 데이터 넣은 다음 select만 90% 이상이고 테이블 사용이 업데이트나 인서트는 적은 경우인지 불특정 다수에게 서비스 하기 때문에 불특정한 row를 가져와서 보여줘야 하는것인지에 다를 수 있는 것입니다. 가장 큰 차이: 데이터와 인덱스 구조→ MyISAM  - 데이터 파일(.MYD) 과 인덱스 파일(.MYI) 이 분리됨  - 인덱스 → 데이터 파일을 다시 읽는 구조  - 동작흐름: PK 인덱스 탐색 (.MYI) -> 데이터 위치…
  • profile_image 데이터베이스를 사용하다 보면 이미 존재하는 데이터인지 확인한 후 INSERT 또는 UPDATE를 해야 하는 상황을 자주 만나게 됩니다.이때 매우 유용한 문법이 바로 INSERT ... ON DUPLICATE KEY UPDATE입니다.즉, 쿼리 한번으로 해결 된다는 의미 인데 아무곳에서나 사용 가능한것은 아니고 키 중복이 발생하는 부분에서만 사용 하는 것입니다.그렇기 때문에 unique의 특성을 모르시는 분은 사용 하면 안되겠지요.  장점- 쿼리 수 감소: SELECT → INSERT/UPDATE 두 번 쿼리 날릴 필요 없음- 동시성 문제 감소: SELECT 후 INSERT 방식보다 Race Condition 발…

상업적 이용 금지. 컨텐츠는 개인 용도로만 사용이 가능 합니다.