해커톤]원데이 프로덕트 챌린지 - 1차 미팅 이후 개발 계획

손지민·2023년 11월 20일
0

개요

팀 구성원이 기획자 1명, iOS(Swift) 1명, Server(Spring Boot)2명으로 구성되었다. iOS와의 협업 경험이 없어서 협업 방식, 개발 계획과 Spring Boot 서버와 iOS 프론트를 합치는 법을 알아보고자 한다.

개발 전체 흐름

1. 프로젝트 초기 설정:

  • 버전 관리 시스템 설정:
    • Git을 활용하여 프로젝트를 관리합니다. GitHub, GitLab, 또는 Bitbucket과 같은 플랫폼을 선택하고 프로젝트 레포지토리를 생성합니다.
  • 프로젝트 구조 정의:
    • 공통된 폴더 구조와 패키지 구조를 정의하고 백엔드 및 프론트엔드 코드를 분리합니다.

2. API 설계:

  • 기능 정의:
    • 기획자와의 미팅을 통해 플랫폼의 주요 기능을 이해하고 목록화합니다.
  • API 명세 작성:
    • 기능에 따라 필요한 API를 설계하고 명세를 작성합니다. RESTful API를 사용하여 효율적인 통신을 구현합니다.

3. 백엔드 개발:

  • Spring Boot 프로젝트 초기 설정:
    • Spring Boot 프로젝트를 생성하고 의존성을 추가합니다. 공통 설정을 정의하고 프로젝트를 빌드합니다.
  • API 구현:
    • 명세에 따라 각각의 API 엔드포인트를 개발합니다. 필요한 비즈니스 로직을 구현하고 데이터베이스와의 상호 작용을 처리합니다.
  • 프론트엔드와의 API 통신 설정:
    • 프론트엔드와의 원활한 협업을 위해 API 통신 방식을 정의하고, 프론트엔드 개발자에게 필요한 정보를 제공합니다.

4. 프론트엔드 개발:

  • 프로젝트 초기 설정:
    • Swift 및 iOS 프로젝트를 초기화하고 필요한 라이브러리 및 의존성을 추가합니다.
  • UI/UX 디자인 및 개발:
    • 기획된 디자인을 기반으로 사용자 인터페이스 및 사용자 경험을 개발합니다. Storyboard를 활용하여 화면을 구성하고, 필요한 컴포넌트를 정의합니다.
  • 백엔드와의 통신 구현:
    • API 명세를 기반으로 백엔드와의 통신을 구현합니다. Alamofire 등의 라이브러리를 사용하여 HTTP 요청을 처리하고 응답을 해석합니다.

5. 협업과 테스트:

  • Git 브랜치 전략:
    • 효과적인 협업을 위해 Git 브랜치 전략을 정의하고 개발자 간의 협업을 원할하게 합니다.
  • 테스트 및 디버깅:
    • 백엔드 및 프론트엔드에서 개발한 기능을 테스트하고 디버깅합니다. 필요한 경우 단위 테스트 및 통합 테스트를 작성합니다.

6. 배포 및 운영:

  • 서버 배포:
    • 백엔드 서버를 클라우드 서비스에 배포하고, 프론트엔드 앱은 App Store에 등록하여 배포합니다.
  • 모니터링 및 유지보수:
    • 서버와 앱의 성능을 모니터링하고, 사용자 피드백을 수집하여 지속적인 개선을 진행합니다.

iOS(Swift)-Server(SpringBoot) 연결하기

1. API 설계 및 개발:

  1. Spring Boot에서 API 개발:
  • Spring Boot 서버에서는 RESTful API를 개발하여 클라이언트에게 데이터를 제공합니다.
  • 각 엔드포인트를 정의하고 해당 엔드포인트에 접근할 때 어떤 동작이 이루어질지 구현합니다.
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/data")
    public ResponseEntity<String> getData() {
        // 비즈니스 로직 수행
        String result = "Hello from Spring Boot!";
        return new ResponseEntity<>(result, HttpStatus.OK);
    }
}
  1. Swift에서 API 호출:
  • iOS-Swift 앱에서는 해당 API에 요청을 보내고 응답을 처리할 코드를 작성합니다.
  • URLSession 등을 사용하여 서버와 통신합니다.
guard let url = URL(string: "http://your-spring-boot-server/api/data") else { return }

URLSession.shared.dataTask(with: url) { (data, response, error) in
    guard let data = data, error == nil else { return }

    // JSON 디코딩 또는 데이터 처리 등을 수행
    let result = String(data: data, encoding: .utf8)
    print(result)
}.resume()

2. CORS 설정 (Cross-Origin Resource Sharing):

  • Spring Boot 서버에서는 CORS 정책을 설정하여 다른 도메인에서의 요청을 허용해야 합니다.
  • WebMvcConfigurer를 사용하여 CORS 설정을 추가합니다.
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("http://your-ios-app-domain")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowCredentials(true);
    }
}
  1. 보안 고려 (HTTPS 등):
  • 앱과 서버 간의 통신을 안전하게 하기 위해 HTTPS를 사용하는 것이 좋습니다.
  1. 서버 배포 및 앱 테스트:
  • 서버를 배포하고 iOS 앱에서 해당 서버에 접속하여 통신이 제대로 이루어지는지 테스트합니다.
profile
Developer

0개의 댓글

관련 채용 정보